From 0177daf2022ff2b760e8cd00df8bba105f96db81 Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期三, 28 二月 2024 09:29:12 +0800
Subject: [PATCH] 销售订单&原材料检验
---
src/api/plan/customerOrderInterrelated.js | 25 +++
src/views/quality/processconfiguration/index.vue | 6
src/views/plan/customerorder/index.vue | 166 +++++++++++++++++++++--
src/api/quality/rawMaterial.js | 8 +
src/views/accounting/jmreport/index.vue | 82 +++++++++++
src/api/accounting/personReport.js | 9 +
src/views/quality/rawMaterial/index.vue | 70 +++++++++
7 files changed, 347 insertions(+), 19 deletions(-)
diff --git a/src/api/accounting/personReport.js b/src/api/accounting/personReport.js
new file mode 100644
index 0000000..4536637
--- /dev/null
+++ b/src/api/accounting/personReport.js
@@ -0,0 +1,9 @@
+import request from '@/router/axios'
+
+export function pageList(query) {
+ return request({
+ url: '/mes/product/personReport',
+ method: 'get',
+ params: query
+ })
+}
diff --git a/src/api/plan/customerOrderInterrelated.js b/src/api/plan/customerOrderInterrelated.js
new file mode 100644
index 0000000..7ce04ff
--- /dev/null
+++ b/src/api/plan/customerOrderInterrelated.js
@@ -0,0 +1,25 @@
+import request from '@/router/axios'
+
+export function interrelatedOrder(data) {
+ return request({
+ url: '/mes/customerOrderInterrelated/interrelatedOrder',
+ method: 'post',
+ data: data
+ })
+}
+
+export function getInterrelatedOrder(id) {
+ return request({
+ url: '/mes/customerOrderInterrelated/getInterrelatedOrder/'+id,
+ method: 'get',
+ })
+}
+
+export function checkHanderOrder(orderId) {
+ return request({
+ url: '/mes/customerOrderInterrelated/checkHanderOrder/' + orderId,
+ method: 'post',
+ })
+ }
+
+
diff --git a/src/api/quality/rawMaterial.js b/src/api/quality/rawMaterial.js
index 407f523..65279b7 100644
--- a/src/api/quality/rawMaterial.js
+++ b/src/api/quality/rawMaterial.js
@@ -8,6 +8,14 @@
})
}
+export function checkPutIFS(id,data) {
+ return request({
+ url: '/mes/rawInspect/check/'+id,
+ method: 'post',
+ data: data
+ })
+}
+
export function selectDevice() {
return request({
url: '/mes/rawInsProduct/selectDevice',
diff --git a/src/views/accounting/jmreport/index.vue b/src/views/accounting/jmreport/index.vue
new file mode 100644
index 0000000..0d5f8ab
--- /dev/null
+++ b/src/views/accounting/jmreport/index.vue
@@ -0,0 +1,82 @@
+<template>
+ <div class="mod-config">
+ <basic-container>
+ <ttable
+ :table="table"
+ @handleSelectionChange="handleSelectionChange"
+ :prelang="prelang"
+ :options="options"
+ :ajaxFun="ajaxFun"
+ ref="reportWorkTable">
+ <template #toolbar></template>
+ </ttable>
+ </basic-container>
+ </div>
+</template>
+
+<script>
+import { mapGetters } from 'vuex'
+import ttable from '@/views/common/ztt-table.vue'
+import { pageList } from '@/api/accounting/personReport'
+export default {
+ components: {
+ ttable
+ },
+ computed: {
+ ...mapGetters(['permissions'])
+ },
+ data(){
+ return {
+ multipleSelection: [],
+ ajaxFun: pageList,
+ options: {
+ height: 300, // 榛樿楂樺害-涓轰簡琛ㄥご鍥哄畾
+ stripe: true, // 鏄惁涓烘枒椹汗 table
+ highlightCurrentRow: false, // 鏄惁瑕侀珮浜綋鍓嶈
+ border: true, // 鏄惁鏈夌旱鍚戣竟妗�
+ lazy: false, // 鏄惁闇�瑕佹噿鍔犺浇
+ fit: true, // 鍒楃殑瀹藉害鏄惁鑷拺寮�
+ multiSelect: true, //
+ seqNo: true,
+ isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳
+ isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H
+ isSearch: true, // 楂樼骇鏌ヨ鎸夐挳
+ defaultOrderBy: { column: 'createTime', direction: 'desc' },
+ cancelRunCreated: true
+ },
+ table: {
+ total: 0,
+ currentPage: 1,
+ pageSize: 20,
+ data: [],
+ // 鏍囬
+ column: [
+ {
+ minWidth: '100',
+ width: '100px',
+ prop: 'contractNo',
+ label: '鍚堝悓缂栧彿',
+ sort: true,
+ isTrue: true,
+ isSearch: true,
+ searchInfoType: 'text',
+ },
+ ],
+ toolbar: [],
+ operator: null
+ },
+ prelang: "operation",
+ }
+ },
+ methods:{
+ // table鑷甫浜嬩欢
+ handleSelectionChange(val) {
+ this.multipleSelection = val
+ },
+ }
+}
+</script>
+
+<style>
+
+</style>
diff --git a/src/views/plan/customerorder/index.vue b/src/views/plan/customerorder/index.vue
index 7990386..e69e1ae 100644
--- a/src/views/plan/customerorder/index.vue
+++ b/src/views/plan/customerorder/index.vue
@@ -8,6 +8,7 @@
:prelang="prelang"
:options="options"
:ajaxFun="ajaxFun"
+ :toolbarMaxLength="4"
:paramArr="type"
ref="customerOrderTable"
>
@@ -241,10 +242,35 @@
<el-button type="primary" @click="startSync">纭� 瀹�</el-button>
</span>
</el-dialog>
+ <el-dialog
+ title="宸插叧鑱旈攢鍞鍗�"
+ :visible.sync="showInterrelatedOrderDialog"
+ width="60%">
+ <el-table border height="100" :data="interrelatedOrderData">
+ <el-table-column type="index" align="center" label="搴忓彿"></el-table-column>
+ <el-table-column prop="contractNo" show-overflow-tooltip align="center" label="鍚堝悓缂栧彿"></el-table-column>
+ <el-table-column prop="entityName" show-overflow-tooltip align="center" label="宸ョ▼鍚嶇О"></el-table-column>
+ <el-table-column prop="sourceId" show-overflow-tooltip align="center" label="娣诲姞鏉ユ簮">
+ <template scope="scope">
+ <el-tag v-if="scope.row.sourceId == 0" type="success">鍚屾</el-tag>
+ <el-tag v-if="scope.row.sourceId == 1" type="info">鎵嬪姩</el-tag>
+ </template>
+ </el-table-column>
+ <el-table-column prop="placeOrderDate" show-overflow-tooltip align="center" label="涓嬪崟鏃ユ湡"></el-table-column>
+ <el-table-column prop="customerName" show-overflow-tooltip align="center" label="瀹㈡埛鍚嶇О"></el-table-column>
+ <el-table-column prop="coState" min-width="100" show-overflow-tooltip align="center" label="閿�鍞鍗曠姸鎬�"></el-table-column>
+ <el-table-column prop="partNo" show-overflow-tooltip align="center" label="浜у搧缂栧彿"></el-table-column>
+ <el-table-column prop="productName" show-overflow-tooltip align="center" label="浜у搧鍚嶇О"></el-table-column>
+ <el-table-column prop="productType" show-overflow-tooltip align="center" label="闅跺睘鍝佺墝"></el-table-column>
+ <el-table-column prop="otcUnit" show-overflow-tooltip align="center" label="鍗曚綅"></el-table-column>
+ <el-table-column prop="buyQtyDue" show-overflow-tooltip align="center" label="鏁伴噺"></el-table-column>
+ </el-table>
+ </el-dialog>
</div>
</template>
<script>
+import {interrelatedOrder,getInterrelatedOrder,checkHanderOrder} from '@/api/plan/customerOrderInterrelated'
import ConfirmPullCustomerorder from './confirm-pull-customerorder'
import TableForm from './customerorder-form'
import TableFormDEesc from './customerorder-form-desc'
@@ -285,6 +311,9 @@
export default {
data() {
return {
+ interrelatedOrderId: null,
+ interrelatedOrderData: [],
+ showInterrelatedOrderDialog: false,
uniqueStateArr: [],
dataForm: {
selectTime: null,
@@ -400,7 +429,7 @@
isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳
isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H
isSearch: true, // 楂樼骇鏌ヨ鎸夐挳
- defaultOrderBy: { column: 'createTime', direction: 'desc' },
+ defaultOrderBy: { column: 'placeOrderDate', direction: 'desc' },
cancelRunCreated: true
},
table: {
@@ -497,7 +526,7 @@
{
minWidth: '120',
prop: 'isAudit',
- label: '瀹℃牳鐘舵��',
+ label: 'PLM瀹℃牳鐘舵��',
sort: true,
isTrue: true,
isSearch: true,
@@ -507,15 +536,19 @@
return this.isAuditList
}
},
- // {
- // minWidth: '80',
- // prop: 'sourceId',
- // label: '璁㈠崟鏉ユ簮',
- // sort: true,
- // isTrue: true,
- // isSearch: true,
- // searchInfoType: 'text'
- // },
+ {
+ minWidth: '120',
+ prop: 'isPass',
+ label: '瀹℃牳閫氳繃鐘舵��',
+ sort: true,
+ isTrue: true,
+ isSearch: true,
+ searchInfoType: 'select',
+ formatter: this.checkIsPass,
+ optList: () => {
+ return this.isPassList
+ }
+ },
{
minWidth: '120',
width: '100px',
@@ -655,6 +688,25 @@
// fun: this.packageExportHandle
// },
{
+ text: '瀹℃牳',
+ type: 'text',
+ size: 'small',
+ fun: this.checkHandOrder,
+ showFun: (row)=>{return row.sourceId==='1'},
+ show: {
+ val: [
+ false,
+ ],
+ key: 'isPass'
+ }
+ },
+ {
+ text: '宸插叧鑱旇鍗�',
+ type: 'text',
+ size: 'small',
+ fun: this.showInterrelatedOrder,
+ },
+ {
text: '鍒犻櫎',
type: 'text',
size: 'small',
@@ -673,8 +725,8 @@
operatorConfig: {
fixed: 'right',
label: '鎿嶄綔',
- width: 100,
- minWidth: 100
+ width: 200,
+ minWidth: 200
}
},
addOrUpdateVisible: false,
@@ -780,7 +832,8 @@
}
],
showSalesPartBatch: false,
- addOrUpdateEescVisible: false
+ addOrUpdateEescVisible: false,
+ isPassList: [{label:'鏈�氳繃',value: false},{label: '閫氳繃',value: true}]
}
},
components: {
@@ -812,6 +865,17 @@
}
},
immediate: true
+ },
+ interrelatedOrderId(newVal){
+ if(newVal){
+ getInterrelatedOrder(newVal).then(res=>{
+ if(res.status===200){
+ this.interrelatedOrderData = res.data.data
+ }
+ }).catch(error=>{
+ console.error(error)
+ })
+ }
}
},
mounted() {
@@ -862,6 +926,13 @@
fun: this.downloadWord,
permitArr: ['03plan','04planed'],
})
+ this.table.toolbar.push({
+ text: '鍏宠仈璁㈠崟',
+ disabled: false,
+ type: 'primary',
+ fun: this.interrelatedOrderFun,
+ permitArr: [],
+ })
if (this.permissions.customerorder_create_masterplan) {
this.table.toolbar.push({
text: '涓荤敓浜ц鍒�',
@@ -872,6 +943,57 @@
}
},
methods: {
+ checkHandOrder(val){
+ this.$confirm('纭瀹℃牳閫氳繃璇ラ攢鍞鍗曞悧?', '鎻愮ず', {
+ confirmButtonText: '閫氳繃',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ checkHanderOrder(val.id).then(res=>{
+ if(res.status===200){
+ this.$message.success("瀹℃牳閫氳繃")
+ this.getData()
+ }
+ }).catch(error=>{
+ console.error(error)
+ })
+ }).catch(() => {});
+ },
+ interrelatedOrderFun(){
+ if(this.multipleSelection.length!=2){
+ this.$message.error("璇烽�夋嫨涓ゆ潯閿�鍞鍗�")
+ return
+ }
+ let autoId = null
+ let handId = null
+ this.multipleSelection.forEach(ele=>{
+ if(ele.sourceId==0){
+ autoId = ele.id
+ }else if(ele.sourceId==1){
+ handId = ele.id
+ }
+ })
+ if(autoId==null || handId==null){
+ this.$message.error("娣诲姞鏉ユ簮椤讳负鎵嬪姩鍜屽悓姝�")
+ return
+ }
+ interrelatedOrder({
+ customerOrderAutoId: autoId,
+ customerOrderHandId: handId
+ }).then(res=>{
+ if(res.status===200){
+ this.$message.success("鍏宠仈鎴愬姛")
+ }
+ }).catch(error=>{
+ console.error(error)
+ })
+ },
+ //灞曠ず宸插叧鑱旇鍗�
+ showInterrelatedOrder(currentOrder){
+ this.interrelatedOrderId = currentOrder.id
+ this.showInterrelatedOrderDialog = true
+ },
+
//涓嬭浇word
downloadWord(){
let ids = this.multipleSelection.map(ele=>ele.id)
@@ -960,6 +1082,18 @@
} else {
this.$message.error('璇烽�夋嫨閿�鍞鍗�')
}
+ },
+ checkIsPass(row, column, cellValue){
+ this.isPassList.forEach((obj) => {
+ if (obj.value === cellValue) {
+ if(obj.value){
+ cellValue = "<span style='color:#34BD66;'>"+obj.label+"</span>"
+ }else{
+ cellValue = "<span style='color:#E84738;'>"+obj.label+"</span>"
+ }
+ }
+ })
+ return cellValue
},
formatDutyDate(row, column, cellValue) {
if (cellValue) {
@@ -1404,6 +1538,10 @@
} else {
if (this.judgeCoState(this.multipleSelection)) {
if (event == 'RELEVANCE') {
+ if(!this.multipleSelection[0].isPass){
+ this.$message.error("璇峰厛瀹℃牳閫氳繃锛屽啀鍏宠仈宸ヨ壓鏂囦欢")
+ return
+ }
const firstPartNo = this.multipleSelection[0].partNo
this.multipleSelection.forEach((item) => {
if (item.isDocument) {
diff --git a/src/views/quality/processconfiguration/index.vue b/src/views/quality/processconfiguration/index.vue
index 79b88e5..84e9848 100644
--- a/src/views/quality/processconfiguration/index.vue
+++ b/src/views/quality/processconfiguration/index.vue
@@ -322,7 +322,11 @@
text: '瀹℃牳缁撴灉',
type: 'text',
size: 'small',
- fun: this.AuditResult
+ fun: this.AuditResult,
+ show: {
+ key: 'type',
+ val: ['杩囩▼妫�楠�','浜у搧妫�楠�','鍖呰妫�楠�']
+ }
})
}
this.table.operator = arr.length>0 ? arr : null
diff --git a/src/views/quality/rawMaterial/index.vue b/src/views/quality/rawMaterial/index.vue
index cad0189..fc085ef 100644
--- a/src/views/quality/rawMaterial/index.vue
+++ b/src/views/quality/rawMaterial/index.vue
@@ -54,7 +54,7 @@
</template>
<script>
import ttable from '@/views/common/ztt-table.vue'
-import { getRawInspectList,delObj,exportRawMaterial,getObj,downloadReport } from '@/api/quality/rawMaterial'
+import { getRawInspectList,delObj,exportRawMaterial,getObj,downloadReport,checkPutIFS } from '@/api/quality/rawMaterial'
import RawMaterialForm from './rawMaterial-form'
import * as fecha from 'element-ui/lib/utils/date'
import { mapGetters } from 'vuex'
@@ -112,6 +112,18 @@
searchInfoType: 'select',
optList: () => {
return this.typeList
+ }
+ },
+ {
+ minWidth: '120',
+ prop: 'checkState',
+ label: '瀹℃牳鐘舵��',
+ isTrue: true,
+ isSearch: true,
+ searchInfoType: 'select',
+ formatter: this.checkStateFormat,
+ optList: () => {
+ return this.checkStateList
}
},
{
@@ -237,6 +249,7 @@
insStateList: [{label:'鍏ㄩ儴',value:''},{label:'宸叉娴�',value:'1'},{label:'鏈娴�',value:'0'}],
StateList: [{label:'鍏ㄩ儴',value:''},{label:'宸插悎鏍�',value:'1'},{label:'涓嶅悎鏍�',value:'0'}],
typeList: [{label:'鍏ㄩ儴',value:''},{label:'棣栨',value:'棣栨'},{label:'杩旀',value:'杩旀'}],
+ checkStateList: [{label:'鏈鏍�',value:'0'},{label:'瀹℃牳閫氳繃',value:'1'},{label:'瀹℃牳涓嶉�氳繃',value:'2'}],
}
},
components: {
@@ -262,13 +275,28 @@
})
}
+ this.table.operator = [{
+ text: '瀹℃牳',
+ type: 'text',
+ size: 'small',
+ fun: this.examineHandle,
+ showFun: (row)=>{return row.type==='棣栨'},
+ show: {
+ key: 'checkState',
+ val: ['0']
+ }
+ }]
if(this.permissions.quality_rawMaterial_del){
- this.table.operator = [{
+ this.table.operator.push({
text: '浣滃簾',
type: 'text',
size: 'small',
- fun: this.deleteHandle
- }]
+ fun: this.deleteHandle,
+ show: {
+ key: 'judgeState',
+ val: ['',null]
+ }
+ })
}
},
computed: {
@@ -282,6 +310,32 @@
}
},
methods:{
+ examineHandle(val){
+ this.$confirm('鏄惁瀹℃牳閫氳繃璇ユ楠岄」?', '鎻愮ず', {
+ distinguishCancelAndClose: true,
+ confirmButtonText: '閫氳繃',
+ cancelButtonText: '涓嶉�氳繃',
+ type: 'warning'
+ }).then(() => {
+ checkPutIFS(val.id,{result: 1}).then(res=>{
+ if(res.status===200){
+ console.log(res)
+ }
+ }).catch(error=>{
+ console.error(error)
+ })
+ }).catch((action) => {
+ if(action === 'cancel'){
+ checkPutIFS(val.id,{result: 2}).then(res=>{
+ if(res.status===200){
+ console.log(res)
+ }
+ }).catch(error=>{
+ console.error(error)
+ })
+ }
+ });
+ },
downloadReport(){
let selection = this.multipleSelection
if(!selection || selection.length < 1){
@@ -420,6 +474,14 @@
return "<span style='color:#34BD66;'>鍚堟牸</span>"
}
},
+ checkStateFormat(row, column, cellValue){
+ this.checkStateList.forEach((obj) => {
+ if (obj.value === cellValue) {
+ cellValue = obj.label
+ }
+ })
+ return cellValue
+ },
formatDateTime(row, column, cellValue) {
return cellValue ? fecha.format(new Date(cellValue), 'yyyy-MM-dd') : ''
},
--
Gitblit v1.9.3