| | |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '@/router/axios' |
| | | |
| | | export function finishedOutcome(query) { |
| | | return request({ |
| | | url: '/mes/finishedOutcome/page', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | |
| | | @click="() => (exportDialogVisible = true)" |
| | | >导åºå°è´¦</el-button |
| | | > |
| | | <!-- <el-button |
| | | style="margin-left: 10px" |
| | | type="primary" |
| | | @click="() => ($refs.technology.init())" |
| | | >ç¼åææ¯äº¤åºå</el-button |
| | | > --> |
| | | </template> |
| | | </ttable> |
| | | <!-- å¼¹çª, æ¥æéæ© --> |
| | |
| | | ></el-table-column> |
| | | </el-table> |
| | | </el-dialog> |
| | | <technology-form ref="technology"></technology-form> |
| | | </div> |
| | | </template> |
| | | |
| | |
| | | } from '@/api/plan/customerOrderInterrelated' |
| | | import ConfirmPullCustomerorder from './confirm-pull-customerorder' |
| | | import TableForm from './customerorder-form' |
| | | import TechnologyForm from './technology-form.vue' |
| | | import TableFormDEesc from './customerorder-form-desc' |
| | | import SampleTableForm from './sample-customerorder-form' |
| | | import { mapGetters } from 'vuex' |
| | |
| | | interrelatedOrderId: null, |
| | | interrelatedOrderData: [], |
| | | showInterrelatedOrderDialog: false, |
| | | technologyDialog:true, |
| | | uniqueStateArr: [], |
| | | dataForm: { |
| | | selectTime: null, |
| | |
| | | SalesPartBatchDialog, |
| | | TableFormDEesc, |
| | | CustomerorderReturnDialog, |
| | | TechnologyForm, |
| | | }, |
| | | computed: { |
| | | ...mapGetters(['permissions']), |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <el-dialog |
| | | top="10vh" |
| | | width="80%" |
| | | title="ç¼åææ¯äº¤åºå" |
| | | :close-on-click-modal="false" |
| | | :visible.sync="visible" |
| | | v-if="visible" |
| | | > |
| | | <el-form :model="dataForm" :rules="dataRule" ref="dataForm" class="l-mes"> |
| | | <el-form-item label=""> |
| | | <!-- <el-date-picker |
| | | v-model="dataForm.selectTime" |
| | | type="datetime" |
| | | placeholder="éæ©æ¥ææ¶é´" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | > |
| | | </el-date-picker> --> |
| | | <rich-text |
| | | editorId="fwb001122" |
| | | :richContent="remark" |
| | | @contentChange="contentChange" |
| | | ></rich-text> |
| | | </el-form-item> |
| | | </el-form> |
| | | |
| | | <div slot="footer" class="dialog-footer"> |
| | | <el-button type="info" @click="visible = false">åæ¶</el-button> |
| | | <el-button |
| | | type="primary" |
| | | :disabled="isSubmit" |
| | | v-thinclick="`dataFormSubmit`" |
| | | >ç¡®å®</el-button |
| | | > |
| | | </div> |
| | | </el-dialog> |
| | | </template> |
| | | |
| | | <script> |
| | | import { otcCustomerOrderSync } from '@/api/plan/customerorder' |
| | | import RichText from '@/views/common/rich-text.vue' |
| | | |
| | | export default { |
| | | components: { RichText }, |
| | | data() { |
| | | return { |
| | | visible: false, |
| | | dataForm: { |
| | | selectTime: null |
| | | }, |
| | | dataRule: {}, |
| | | isSubmit: false, |
| | | remark:'' |
| | | } |
| | | }, |
| | | methods: { |
| | | init() { |
| | | this.visible = true |
| | | }, |
| | | dataFormSubmit() { |
| | | this.isSubmit = true |
| | | if (this.dataForm.selectTime != null && this.dataForm.selectTime != '') { |
| | | otcCustomerOrderSync({ |
| | | selectTime: this.dataForm.selectTime, |
| | | pathCode: '0' |
| | | }) |
| | | .then((response) => { |
| | | const resData = response.data |
| | | if (resData.code === 0) { |
| | | this.$message.success('æåéå®è®¢åæåï¼' + resData.msg) |
| | | this.visible = false |
| | | this.isSubmit = false |
| | | this.dataForm.selectTime = null |
| | | this.$emit('refreshDataList') |
| | | } else { |
| | | this.$message.success('æåéå®è®¢å失败') |
| | | this.isSubmit = false |
| | | } |
| | | }) |
| | | .catch((error) => { |
| | | this.isSubmit = false |
| | | console.error(error) |
| | | }) |
| | | } else { |
| | | this.isSubmit = false |
| | | this.$message.error('请å
éæ©æ¥æ') |
| | | } |
| | | }, |
| | | contentChange(e){ |
| | | console.log(1111,e) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style scoped lang="scss"> |
| | | .mps-table .el-table__row > td { |
| | | border: none; |
| | | } |
| | | |
| | | .mps-table::before { |
| | | height: 0px; |
| | | } |
| | | /* |
| | | å符串è¿é¿æ¶ï¼éèæ¾ç¤ºçç¥å· |
| | | */ |
| | | .inline-el-hidden { |
| | | display: block; |
| | | width: 93%; |
| | | overflow: hidden; |
| | | text-overflow: ellipsis; |
| | | white-space: nowrap; |
| | | margin: 0 auto; |
| | | } |
| | | ::v-deep .quill-editor{ |
| | | .ql-container{ |
| | | min-height: 400px!important; |
| | | } |
| | | } |
| | | </style> |
| | |
| | | </el-tab-pane> --> |
| | | <el-tab-pane label="æ£æµä¿¡æ¯" name="æ£æµä¿¡æ¯"> |
| | | <div style="margin-top:10px;"> |
| | | <el-tabs type="card"> |
| | | <div class="process" v-if="process"> |
| | | <el-divider |
| | | class="pane-divider" |
| | | direction="vertical" |
| | | ></el-divider> |
| | | <span style="font-size:14px;font-weight:bold" |
| | | >è¿ç¨æ£</span> |
| | | <div style="font-size: 12px;margin-top: 10px;margin-left: 10px;">æ ·ååï¼<span style="font-weight: 700;">{{process.sampleName}}</span></div> |
| | | <el-table |
| | | stripe |
| | | :data="process.sampleItem" |
| | | :height="paramsTableHeight" |
| | | :header-cell-style="paramsTableHeaderStyle0" |
| | | :row-class-name="tableRowClassName" |
| | | class="taskinfo-params-table" |
| | | style="margin: 10px;width: 95%;" |
| | | > |
| | | <el-table-column |
| | | prop="father" |
| | | label="项ç®" |
| | | align="center" |
| | | min-width="75px" |
| | | /> |
| | | <el-table-column |
| | | prop="name" |
| | | label="ææ " |
| | | align="center" |
| | | min-width="100px" |
| | | /> |
| | | <el-table-column |
| | | prop="result" |
| | | label="ç»æ" |
| | | align="center" |
| | | min-width="60px" |
| | | > |
| | | <template slot-scope="scope"> |
| | | {{ |
| | | scope.row.isQualified == 0 |
| | | ? 'ä¸åæ ¼' |
| | | : 'åæ ¼' |
| | | }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="userName" |
| | | label="æ£éªäºº" |
| | | align="center" |
| | | min-width="90px" |
| | | /> |
| | | </el-table> |
| | | </div> |
| | | <div class="product" v-if="finished" :class="{checkMore:process}"> |
| | | <el-divider |
| | | class="pane-divider" |
| | | direction="vertical" |
| | | ></el-divider> |
| | | <span style="font-size:14px;font-weight:bold" |
| | | >äº§åæ£</span> |
| | | <div style="font-size: 12px;margin-top: 10px;margin-left: 10px;">æ ·ååï¼<span style="font-weight: 700;">{{finished.sampleName}}</span></div> |
| | | <el-table |
| | | stripe |
| | | :data="finished.sampleItem" |
| | | :height="paramsTableHeight" |
| | | :header-cell-style="paramsTableHeaderStyle0" |
| | | :row-class-name="tableRowClassName" |
| | | class="taskinfo-params-table" |
| | | style="margin: 10px;width: 95%;" |
| | | > |
| | | <el-table-column |
| | | prop="father" |
| | | label="项ç®" |
| | | align="center" |
| | | min-width="75px" |
| | | /> |
| | | <el-table-column |
| | | prop="name" |
| | | label="ææ " |
| | | align="center" |
| | | min-width="100px" |
| | | /> |
| | | <el-table-column |
| | | prop="result" |
| | | label="ç»æ" |
| | | align="center" |
| | | min-width="60px" |
| | | > |
| | | <template slot-scope="scope"> |
| | | {{ |
| | | scope.row.isQualified == 0 |
| | | ? 'ä¸åæ ¼' |
| | | : 'åæ ¼' |
| | | }} |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column |
| | | prop="userName" |
| | | label="æ£éªäºº" |
| | | align="center" |
| | | min-width="90px" |
| | | /> |
| | | </el-table> |
| | | </div> |
| | | <!-- <p v-show="!process&&!finished">ææ æ°æ®</p> --> |
| | | <!-- <el-tabs type="card"> |
| | | <el-tab-pane |
| | | v-for="(item, index) in checkItemList" |
| | | :key="item.reportTypeLabel" |
| | |
| | | </el-table-column> |
| | | </el-table> |
| | | </el-tab-pane> |
| | | <!--<el-tab-pane label="éä»¶"> |
| | | <el-upload |
| | | drag |
| | | ref="upload" |
| | | action="/mes/reportSample/upload" |
| | | :headers="headers" |
| | | :auto-upload="true" |
| | | :file-list="fileList" |
| | | list-type="text" |
| | | :on-preview="handlePreview" |
| | | :with-credentials="true" |
| | | > |
| | | <i class="el-icon-upload"></i> |
| | | <div class="el-upload__text"> |
| | | å°æä»¶æå°æ¤å¤ï¼æ<em>ç¹å»ä¸ä¼ </em> |
| | | </div> |
| | | </el-upload> |
| | | </el-tab-pane>--> |
| | | </el-tabs> |
| | | </el-tabs> --> |
| | | </div> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="ç产记å½" name="ç产记å½"> |
| | |
| | | .taskinfo-params-table >>> td { |
| | | padding: 3px 0px; |
| | | } |
| | | .checkMore{ |
| | | margin-top: 20px; |
| | | } |
| | | </style> |
| | | <script> |
| | | import { |
| | |
| | | traceType: 'posite', |
| | | reportTypeOptions: [], |
| | | checkItemList: [], |
| | | mouldRecordList: [] |
| | | mouldRecordList: [], |
| | | finished:null, |
| | | process:null |
| | | } |
| | | }, |
| | | mounted() { |
| | |
| | | _that.currProductTracking = {} |
| | | } |
| | | // æ£æµä¿¡æ¯ |
| | | const sampleItemList = data.data.sampleItems |
| | | if (sampleItemList != null && sampleItemList.length > 0) { |
| | | _that.paramValues = sampleItemList |
| | | _that.checkItemList = [] |
| | | sampleItemList.forEach((item) => { |
| | | const reportTypeLabel = _that.reportTypeOptions.find( |
| | | (el) => { |
| | | return item.reportType == el.value |
| | | } |
| | | ) |
| | | if (reportTypeLabel) { |
| | | const existCheckItem = _that.checkItemList.find( |
| | | (checkItem) => { |
| | | return ( |
| | | reportTypeLabel.label == checkItem.reportTypeLabel |
| | | ) |
| | | } |
| | | ) |
| | | if (existCheckItem) { |
| | | existCheckItem.itemList.push(item) |
| | | } else { |
| | | _that.checkItemList.push({ |
| | | reportTypeLabel: reportTypeLabel.label, |
| | | itemList: [item] |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | // reportTypeOptions |
| | | } else { |
| | | _that.paramValues = [] |
| | | _that.checkItemList = [] |
| | | const sampleItems = data.data.sampleItems |
| | | // æ£æµä¿¡æ¯-è¿ç¨æ£ |
| | | if(sampleItems&&sampleItems.process&&sampleItems.process.length>0){ |
| | | _that.process = sampleItems.process[0] |
| | | }else{ |
| | | _that.process = null |
| | | } |
| | | // æ£æµä¿¡æ¯-äº§åæ£ |
| | | if(sampleItems&&sampleItems.finished&&sampleItems.finished.length>0){ |
| | | _that.finished = sampleItems.finished[0] |
| | | }else{ |
| | | _that.finished = null |
| | | } |
| | | // if (sampleItemList != null && sampleItemList.length > 0) { |
| | | // _that.paramValues = sampleItemList |
| | | // _that.checkItemList = [] |
| | | // sampleItemList.forEach((item) => { |
| | | // const reportTypeLabel = _that.reportTypeOptions.find( |
| | | // (el) => { |
| | | // return item.reportType == el.value |
| | | // } |
| | | // ) |
| | | // if (reportTypeLabel) { |
| | | // const existCheckItem = _that.checkItemList.find( |
| | | // (checkItem) => { |
| | | // return ( |
| | | // reportTypeLabel.label == checkItem.reportTypeLabel |
| | | // ) |
| | | // } |
| | | // ) |
| | | // if (existCheckItem) { |
| | | // existCheckItem.itemList.push(item) |
| | | // } else { |
| | | // _that.checkItemList.push({ |
| | | // reportTypeLabel: reportTypeLabel.label, |
| | | // itemList: [item] |
| | | // }) |
| | | // } |
| | | // } |
| | | // }) |
| | | // // reportTypeOptions |
| | | // } else { |
| | | // _that.paramValues = [] |
| | | // _that.checkItemList = [] |
| | | // } |
| | | _that.currOperateTask = data.data.operationTask |
| | | if (_that.currOperateTask == null) { |
| | | _that.currOperateTask = { |
| | |
| | | _that.productRecordParamValues = [] |
| | | _that.paramTabs = [] |
| | | } else { |
| | | // å·¥æ¥ä¿¡æ¯ |
| | | _that.getStepRecords({ |
| | | id: _that.currOperateTask.id, |
| | | sn: nodeData.batchNo.split('SNå·:')[1] |
| | | }) |
| | | // å·¥æ¥ä¿¡æ¯--æ¥é注éæäº |
| | | // _that.getStepRecords({ |
| | | // id: _that.currOperateTask.id, |
| | | // sn: nodeData.batchNo.split('SNå·:')[1] |
| | | // }) |
| | | // å·¥èºåæ°ä¿¡æ¯ |
| | | _that.queryTechnologyInfo(_that.currOperateTask.id) |
| | | // çäº§è®°å½ |
| | |
| | | } |
| | | return headerStyle |
| | | }, |
| | | paramsTableHeaderStyle0({ row, column, rowIndex, columnIndex }) { |
| | | let headerStyle = 'background:#599ef4;color:#fff;' |
| | | if (columnIndex === 0) { |
| | | headerStyle += 'border-radius: 6px 0px 0px 0px;' |
| | | } else if (columnIndex === 3) { |
| | | headerStyle += 'border-radius: 0px 6px 0px 0px;' |
| | | } |
| | | return headerStyle |
| | | }, |
| | | tableRowClassName({ row, rowIndex }) { |
| | | if (rowIndex % 2 === 1) { |
| | | return 'stripe-row' |
| | |
| | | <ttable |
| | | :table="table" |
| | | :isShowHide="true" |
| | | :ajaxFun="ajaxFun" |
| | | :prelang="prelang" |
| | | :options="options" |
| | | :options="options" |
| | | ref="processconfiguration" |
| | | > |
| | | <template #toolbar></template> |
| | |
| | | |
| | | <script> |
| | | import ttable from '@/views/common/ztt-table.vue' |
| | | import { finishedOutcome } from '@/api/warehouse/finishedOutcome' |
| | | export default { |
| | | data(){ |
| | | return { |
| | | ajaxFun: finishedOutcome, |
| | | prelang: 'operation', |
| | | dataListLoading: false, |
| | | options: { |
| | |
| | | column: [ |
| | | { |
| | | minWidth: '140', |
| | | prop: 'material', |
| | | label: '订åç¼ç ', |
| | | prop: 'outBatchNo', |
| | | label: 'æ¹æ¬¡å·', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '140', |
| | | prop: 'type', |
| | | prop: 'parNo', |
| | | label: '产åç¼å·', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | },{ |
| | | minWidth: '140', |
| | | prop: 'partName', |
| | | label: '产ååç§°', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | },{ |
| | | minWidth: '140', |
| | | prop: 'oo', |
| | | label: '产ååå·', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | },{ |
| | | minWidth: '140', |
| | | prop: 'materhhooial', |
| | | label: 'è´¨é追溯å·', |
| | | prop: 'specs', |
| | | label: 'è§æ ¼åå·', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '140', |
| | | prop: 'mateuurial', |
| | | label: '客æ·åç§°', |
| | | prop: 'unit', |
| | | label: 'åä½', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '140', |
| | | prop: 'materoiial', |
| | | label: 'å·¥èºæä»¶ç¼å·', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '140', |
| | | prop: 'matperoial', |
| | | label: 'åºä½å·', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '140', |
| | | prop: 'materpial', |
| | | label: '产ååç§°', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '130', |
| | | width: '150', |
| | | prop: 'dealTime', |
| | | label: 'å®¡æ ¸æ¶é´', |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'datetimerange', |
| | | // formatter: this.formatDateTime, |
| | | }, |
| | | { |
| | | minWidth: '140', |
| | | prop: 'maial', |
| | | prop: 'number', |
| | | label: 'æ°é', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '140', |
| | | prop: 'cçreateTime', |
| | | label: 'åºåºæ¶é´', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | searchInfoType: 'datetimerange', |
| | | formatter: this.formatDateTime, |
| | | }, |
| | | { |
| | | minWidth: '140', |
| | | prop: 'createUser', |
| | | label: 'å建人', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | }, |
| | | ], |
| | | toolbar: [ |
| | | { |
| | | text: 'è·åIFSæååº', |
| | | type: 'primary', |
| | | // fun: this.addOrUpdateHandle |
| | | }, |
| | | |
| | | ], |
| | | // operator: [], |
| | | // operatorConfig: {} |
| | | }, |
| | | } |
| | | }, |
| | | medthods: {}, |
| | | // computed: { |
| | | // ...mapGetters(['permissions']) |
| | | // }, |
| | | medthods: { |
| | | formatDateTime(row, column, cellValue) { |
| | | return cellValue ? fecha.format(new Date(cellValue), 'yyyy-MM-dd') : '' |
| | | }, |
| | | }, |
| | | components: { |
| | | ttable |
| | | }, |
| | | } |
| | | </script> |
| | | </script> |
| | |
| | | <ttable |
| | | :table="table" |
| | | :isShowHide="true" |
| | | :ajaxFun="ajaxFun" |
| | | :prelang="prelang" |
| | | :options="options" |
| | | :dataListLoading="false" |
| | | ref="processconfiguration" |
| | | > |
| | | <template #toolbar></template> |
| | |
| | | return { |
| | | ajaxFun: productPage, |
| | | prelang: 'operation', |
| | | dataListLoading: false, |
| | | options: { |
| | | height: 300, // é»è®¤é«åº¦-为äºè¡¨å¤´åºå® |
| | | stripe: true, // æ¯å¦ä¸ºæé©¬çº¹ table |
| | |
| | | ttable |
| | | }, |
| | | } |
| | | </script> |
| | | </script> |
| | |
| | | // const url = 'http://192.168.2.7:9999' |
| | | // const url = 'https://ztms-mes.chinaztt.cn/' |
| | | |
| | | const url = 'http://192.168.23.249:9999' |
| | | const url = 'http://192.168.0.104:9999' |
| | | |
| | | |
| | | const localUrl = 'http://localhost:8089' |