From 47cf5518f0f61dbf8066c2273b9f77c2cd7b1751 Mon Sep 17 00:00:00 2001
From: YLouie <929705085@qq.com>
Date: 星期五, 19 九月 2025 17:56:03 +0800
Subject: [PATCH] 销售订单plm同步
---
src/views/quality/rawMaterial/index.vue | 366 +++++++++++++++++++++++++++++++++++++++------------
1 files changed, 276 insertions(+), 90 deletions(-)
diff --git a/src/views/quality/rawMaterial/index.vue b/src/views/quality/rawMaterial/index.vue
index 3e33e70..1152cfb 100644
--- a/src/views/quality/rawMaterial/index.vue
+++ b/src/views/quality/rawMaterial/index.vue
@@ -17,16 +17,18 @@
<template>
<div class="mod-config">
<basic-container>
- <ttable
+ <ttable
:table="table"
:resultData="resultData"
- @change ="costPlannedAmountChange"
@handleSelectionChange="handleSelectionChange"
:prelang="prelang"
:options="options"
:ajaxFun="ajaxFun"
+ @queryParam="getQueryParam($event)"
ref="rawMaterialTable">
- <template #toolbar></template>
+ <template #toolbar>
+ <!-- <el-button @click="exportRawMaterial" type="primary" >瀵煎嚭</el-button> -->
+ </template>
</ttable>
</basic-container>
<!-- 寮圭獥, 鏂板 / 淇敼 -->
@@ -35,21 +37,40 @@
ref="addOrUpdate"
@refreshDataList="getData"
></RawMaterialForm>
+ <el-dialog
+ top="7vh"
+ title="鎵撳嵃棰勮"
+ :visible.sync="printDialogVisible"
+ width="70%">
+ <div style="width:90%;margin-left:5%;height: 60vh;overflow-y: scroll;">
+ <printTemplate id="printRaw" :formData="printFormData"></printTemplate>
+ </div>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="()=>{printDialogVisible = false;this.printFormData=null}">鍙� 娑�</el-button>
+ <el-button type="primary" @click="printFun()">鎵� 鍗�</el-button>
+ </span>
+ </el-dialog>
</div>
</template>
<script>
-import ExportMaterial from './ExportMaterial.vue'
import ttable from '@/views/common/ztt-table.vue'
-import { getRawInspectList,delObj } 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'
+import PrintJS from 'print-js'
+import { transformZip } from '@/util/fileTransform'
+import printTemplate from './rawMaterial-print'
export default {
data() {
return {
+ printFormData: null,
+ printDialogVisible: false,
+ queryParam: {},
resultData:[],
addOrUpdateVisible: false,
type: [1],
+ multipleSelection: [],
prelang: 'rawMaterial',
ajaxFun: getRawInspectList,
options: {
@@ -64,24 +85,54 @@
isRefresh: true, // 鏄惁鏄剧ず鍒锋柊鎸夐挳
isShowHide: true, // 鏄惁鏄剧ず鏄惧奖鎸夐挳H
isSearch: true, // 楂樼骇鏌ヨ鎸夐挳
- defaultOrderBy: { column: 'formTime', direction: 'desc' },
+ defaultOrderBy: { column: 'createTime', direction: 'desc' },
},
table: {
total: 0,
currentPage: 1,
pageSize: 20,
data: [],
- isExport:true,
// 鏍囬
column: [
+ {
+ minWidth: '120',
+ prop: 'rawInsNo',
+ label: '鍘熸潗鏂欐楠岀紪鍙�',
+ isTrue: true,
+ isSearch: true,
+ searchInfoType: 'text',
+ render: { fun: this.addOrUpdateHandle }
+ },
+ {
+ minWidth: '120',
+ prop: 'type',
+ label: '妫�楠岀被鍨�',
+ isTrue: true,
+ isSearch: true,
+ searchInfoType: 'select',
+ optList: () => {
+ return this.typeList
+ }
+ },
+ {
+ minWidth: '120',
+ prop: 'checkState',
+ label: '瀹℃牳鐘舵��',
+ isTrue: true,
+ isSearch: true,
+ searchInfoType: 'select',
+ formatter: this.checkStateFormat,
+ optList: () => {
+ return this.checkStateList
+ }
+ },
{
minWidth: '120',
prop: 'code',
label: '鍘熸潗鏂欑紪鐮�',
isTrue: true,
isSearch: true,
- searchInfoType: 'text',
- render: { fun: this.addOrUpdateHandle }
+ searchInfoType: 'text'
},
{
minWidth: '120',
@@ -136,11 +187,13 @@
},
{
minWidth: '120',
- prop: 'createTime',
+ prop: 'startTime',
label: '鎶ユ鏃ユ湡',
isTrue: true,
+ sort: true,
isSearch: true,
searchInfoType: 'text',
+ searchInfoType: 'datetimerange',
formatter: this.formatDateTime,
},
{
@@ -158,6 +211,7 @@
isTrue: true,
isSearch: true,
searchInfoType: 'text',
+ searchInfoType: 'datetimerange',
formatter: this.formatDateTime,
},
{
@@ -184,25 +238,17 @@
return this.StateList
}
},
+ {
+ minWidth: '120',
+ prop: 'remark',
+ label: '澶囨敞',
+ isTrue: true,
+ isSearch: true,
+ searchInfoType: 'text',
+ },
],
- toolbar: [
- {
- text: '鏂板',
- type: 'primary',
- fun: this.addOrUpdateHandle
- },
- {
- text: '瀵煎嚭',
- type: 'primary',
- fun: this.handleExcel
- }
- ],
- operator: [{
- text: '浣滃簾',
- type: 'text',
- size: 'small',
- fun: this.deleteHandle
- }],
+ toolbar: [],
+ operator: null,
operatorConfig: {
fixed: 'right',
label: '鎿嶄綔',
@@ -212,52 +258,180 @@
},
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: {
ttable,
RawMaterialForm,
- ExportMaterial,
+ printTemplate,
},
created() {
+ if(this.permissions.quality_rawMaterial_add){
+ this.table.toolbar.push({
+ text: '鏂板',
+ type: 'primary',
+ fun: this.addOrUpdateHandle
+ })
+ }
+ if(this.permissions.quality_rawMaterial_download){
+ this.table.toolbar.push({
+ text: '涓嬭浇妫�楠屾姤鍛�',
+ type: 'primary',
+ loading: false,
+ disabled: false,
+ fun: this.downloadReport,
- },
+ })
+ }
+ if(this.permissions.quality_rawMaterial_check){
+ this.table.operator = [{
+ text: '瀹℃牳',
+ type: 'text',
+ size: 'small',
+ fun: this.examineHandle,
+ showFun: (row)=>{return row.type==='棣栨'&& row.insState==='1'},
+ show: {
+ key: 'checkState',
+ val: ['0','2']
+ }
+ }]
+ }
+ if(this.permissions.quality_rawMaterial_del){
+ this.table.operator.push({
+ text: '浣滃簾',
+ type: 'text',
+ size: 'small',
+ fun: this.deleteHandle,
+ show: {
+ key: 'judgeState',
+ val: ['',null]
+ }
+ })
+ }
+ },
computed: {
...mapGetters(['permissions'])
},
- methods:{
- async costPlannedAmountChange(value){
- this.resultData= value
- },
-
- handleExcel() {
- console.log(this.resultData);
- console.log(this.table.column);
- // let arr = this.table.column.map(el = el.isTrue == true)
- // console.log(arr);
- let arr = this.table.column.filter(item => item.isTrue == true).map(item => {
- return{
- prop:item.prop,
- label:item.label
- }
- })
- let opt = {
- title: '鏂囨。鏍囬',
- column: [{
- label:'',
- prop:'header',
- children:arr
- }],
- data: this.resultData
+ watch:{
+ printFormData(newVal){
+ if(newVal){
+ this.printFormData = newVal
+ }
}
- this.$Export.excel({
- title: opt.title,
- columns: opt.column,
- data: opt.data
- });
- // console.log(this.table);
-
- },
+ },
+ methods:{
+ examineHandle(val){
+ this.$confirm('鏄惁瀹℃牳閫氳繃璇ユ楠岄」?', '鎻愮ず', {
+ distinguishCancelAndClose: true,
+ confirmButtonText: '閫氳繃',
+ cancelButtonText: '涓嶉�氳繃',
+ type: 'warning'
+ }).then(() => {
+ this.checkPutIFSFun(val.id,1);
+ }).catch((action) => {
+ if(action === 'cancel'){
+ this.checkPutIFSFun(val.id,2);
+ }
+ });
+ },
+ checkPutIFSFun(id,result){
+ checkPutIFS(id, result).then(res=>{
+ if(res.status===200){
+ this.getData()
+ }
+ }).catch(error=>{
+ console.error(error)
+ })
+ },
+ downloadReport(){
+ let selection = this.multipleSelection
+ if(!selection || selection.length < 1){
+ this.$message.error("璇峰厛閫夋嫨妫�楠屾暟鎹�")
+ return
+ }else{
+ let arr = selection.filter(s=>{
+ return s.judgeState==null || s.judgeState==''
+ })
+ if(arr.length > 0){
+ this.$message.error("鍙兘閫夋嫨宸叉娴嬬殑鏁版嵁")
+ return
+ }
+ let ids = []
+ selection.forEach(ele=>{
+ ids.push(ele.id)
+ })
+ this.table.toolbar.find((e) => e.text === '涓嬭浇妫�楠屾姤鍛�').loading = true
+ this.table.toolbar.find((e) => e.text === '涓嬭浇妫�楠屾姤鍛�').disabled = true
+ try{
+ downloadReport({ids : ids}).then(res=>{
+ transformZip(res)
+ })
+ }catch(error){
+ console.log(error)
+ } finally{
+ this.table.toolbar.find((e) => e.text === '涓嬭浇妫�楠屾姤鍛�').loading = false
+ this.table.toolbar.find((e) => e.text === '涓嬭浇妫�楠屾姤鍛�').disabled = false
+ }
+ }
+ },
+ //鏌ョ湅鎶ュ憡鎸夐挳
+ previewFun(row){
+ getObj(row.id).then(res=>{
+ this.printFormData = res.data.data
+ this.printDialogVisible = true
+ }).catch(error=>{
+ console.log(error);
+ })
+ },
+ //鎵撳嵃鎸夐挳
+ printFun() {
+ this.printDialogVisible = false;
+ PrintJS({
+ printable: "printRaw",
+ type: "html",
+ // header: "鍘熸潗鏂欐娴嬫姤鍛�",
+ targetStyles: ["*"],
+ style: `@page {margin: 0mm 5mm;size: A4 landscape;}
+ html {zoom:100%;}
+ @media print {
+ html,body{
+ width:200mm;
+ height:297mm;
+ }
+ }`,
+ ignoreElements: ["no-ignore"],
+ orientation: 'portrait'
+ });
+ },
+ getQueryParam(data){
+ this.queryParam = data
+ },
+ exportRawMaterial(){
+ exportRawMaterial(this.queryParam).then(res=>{
+ this.downloadFun(res)
+ }).catch(error=>{
+ console.log(error);
+ })
+ },
+ downloadFun(result){
+ if(result == null || result == undefined){
+ return;
+ }
+ var nameList = result.headers['content-disposition'];
+ nameList = decodeURI(nameList);
+ var fileName = nameList.split('=')[1];
+ const blob = new Blob([result.data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' })
+ const downloadElement = document.createElement('a') // 鏂板缓涓�涓狣OM鑺傜偣
+ const href = window.URL.createObjectURL(blob) // 鍒涘缓涓嬭浇鐨勯摼鎺�
+ downloadElement.href = href
+ downloadElement.download = fileName // 涓嬭浇鍚庢枃浠跺悕
+ document.body.appendChild(downloadElement) // 灏嗘柊澧炵殑鑺傜偣鎸傝浇鍒伴〉闈笂
+ downloadElement.click() // 鐐瑰嚮涓嬭浇
+ document.body.removeChild(downloadElement) // 涓嬭浇瀹屾垚绉婚櫎鍏冪礌
+ window.URL.revokeObjectURL(href)
+ },
// 鍒犻櫎
deleteHandle(row) {
this.$confirm('鏄惁纭鍒犻櫎璇ユ暟鎹細' + row.code , '鎻愮ず', {
@@ -279,10 +453,16 @@
},
// 鏂板 / 淇敼
addOrUpdateHandle(row) {
+ if(!this.permissions.quality_rawMaterial_edit && row.id!=null){
+ this.$message.error("璇ヨ鑹叉病鏈夋搷浣滄潈闄�")
+ return
+ }
this.$router.push({
name: 'rawMaterialForm',
- query: {
- id: row == null ? null : row.id,
+ query: {
+ id: row == null ? null : row.id
+ },
+ params: {
resultVal: row == null ? null : row.judgeState
}
})
@@ -296,51 +476,57 @@
}
},
formatJudgeState(row, column, cellValue){
- if(cellValue != undefined || cellValue != null){
+ if(cellValue != undefined && cellValue != null && cellValue != ''){
if(cellValue == 0){
return "<span style='color:#E84738;'>涓嶅悎鏍�</span>"
}
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') : ''
},
getData() {
this.$refs.rawMaterialTable.getDataList()
-
},
// table鑷甫浜嬩欢
handleSelectionChange(val) {
+ this.multipleSelection = val
// 鏍规嵁鐘舵�侊紝绂佺敤琛ㄥご鎸夐挳
// 绛涢�夊嚭閫変腑璁板綍鐨勭姸鎬�
- var stateArr = val.map(function(value, index) {
- return value.coState
- })
+ // var stateArr = val.map(function(value, index) {
+ // return value.coState
+ // })
// 閫変腑鐘舵�佹暟缁勫厓绱犲幓閲�
- var uniqueStateArr = []
- for (var i = 0; i < stateArr.length; i++) {
- if (uniqueStateArr.indexOf(stateArr[i]) == -1) {
- uniqueStateArr.push(stateArr[i])
- }
- }
+ // var uniqueStateArr = []
+ // for (var i = 0; i < stateArr.length; i++) {
+ // if (uniqueStateArr.indexOf(stateArr[i]) == -1) {
+ // uniqueStateArr.push(stateArr[i])
+ // }
+ // }
// 寰幆鑷畾涔夋寜閽紝鍒ゆ柇姣忎釜鎸夐挳鐨刾ermitArr鏄惁瀹屽叏鍖呭惈閫変腑鐘舵�侊紝鑻ュ畬鍏ㄥ寘鍚紝鍒欐寜閽寒锛屽惁鍒欐寜閽伆
- for (var i = 0; i < this.stateTagArr.length; i++) {
- if (
- uniqueStateArr.every((val) =>
- this.stateTagArr[i].permitArr.length <= 0
- ? true
- : this.stateTagArr[i].permitArr.includes(val)
- )
- ) {
- this.stateTagArr[i].disabled = false
- } else {
- this.stateTagArr[i].disabled = true
- }
- }
- this.multipleSelection = val
+ // for (var i = 0; i < this.stateTagArr.length; i++) {
+ // if (
+ // uniqueStateArr.every((val) =>
+ // this.stateTagArr[i].permitArr.length <= 0
+ // ? true
+ // : this.stateTagArr[i].permitArr.includes(val)
+ // )
+ // ) {
+ // this.stateTagArr[i].disabled = false
+ // } else {
+ // this.stateTagArr[i].disabled = true
+ // }
+ // }
},
}
}
</script>
-
\ No newline at end of file
--
Gitblit v1.9.3