modified: src/api/equipment/equipment.js
new file: src/api/quality/rawMaterial.js
modified: src/api/technology/document.js
new file: src/const/crud/quality/rawMaterial.js
modified: src/router/views/index.js
modified: src/views/common/teststandardradio.vue
modified: src/views/equipment/equipment/index.vue
modified: src/views/plan/customerorder/customerorder-form.vue
modified: src/views/plan/customerorder/index.vue
new file: src/views/quality/rawMaterial/index.vue
new file: src/views/quality/rawMaterial/rawMaterial-form.vue
modified: src/views/technology/document/document-form.vue
modified: src/views/technology/operation/index.vue
modified: src/views/technology/operation/operation-form.vue
modified: src/views/technology/routing/index.vue
modified: src/views/technology/routing/routing-form.vue
modified: src/views/technology/structure/index.vue
modified: src/views/technology/structure/single-structure-form.vue
modified: vue.config.js
| | |
| | | }) |
| | | } |
| | | |
| | | export function pullEquip() { |
| | | return request({ |
| | | url: '/mes/equipment/pullEquip', |
| | | method: 'post', |
| | | }) |
| | | } |
| | | |
| | | export function addObj(obj) { |
| | | return request({ |
| | | url: '/mes/equipment', |
¶Ô±ÈÐÂÎļþ |
| | |
| | | import request from '@/router/axios' |
| | | |
| | | export function getRawInspectList(query) { |
| | | return request({ |
| | | url: '/mes/rawInspect/page', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | export function selectDevice() { |
| | | return request({ |
| | | url: '/mes/rawInsProduct/selectDevice', |
| | | method: 'get', |
| | | }) |
| | | } |
| | | |
| | | export function addRawInspects(data) { |
| | | return request({ |
| | | url: '/mes/rawInspect/addRawInspects', |
| | | method: 'post', |
| | | data: data |
| | | }) |
| | | } |
| | | |
| | | export function getObj(data) { |
| | | return request({ |
| | | url: '/mes/rawInspect/'+data, |
| | | method: 'get', |
| | | }) |
| | | } |
| | | |
| | | export function delObj(data) { |
| | | return request({ |
| | | url: '/mes/rawInspect/'+data, |
| | | method: 'delete' |
| | | }) |
| | | } |
| | | |
| | | export function updateRawInsProduct(data) { |
| | | return request({ |
| | | url: '/mes/rawInsProduct/updaterawInsProduct', |
| | | method: 'post', |
| | | params: data |
| | | }) |
| | | } |
| | | |
| | |
| | | }) |
| | | } |
| | | |
| | | export function getRouting(query) { |
| | | return request({ |
| | | url: '/mes/document/getRouting', |
| | | method: 'get', |
| | | params: query |
| | | }) |
| | | } |
| | | |
| | | export function delObj(id) { |
| | | return request({ |
| | | url: '/mes/document/' + id, |
¶Ô±ÈÐÂÎļþ |
| | |
| | | /* |
| | | * Copyright (c) 2018-2025, ztt All rights reserved. |
| | | * |
| | | * Redistribution and use in source and binary forms, with or without |
| | | * modification, are permitted provided that the following conditions are met: |
| | | * |
| | | * Redistributions of source code must retain the above copyright notice, |
| | | * this list of conditions and the following disclaimer. |
| | | * Redistributions in binary form must reproduce the above copyright |
| | | * notice, this list of conditions and the following disclaimer in the |
| | | * documentation and/or other materials provided with the distribution. |
| | | * Neither the name of the pig4cloud.com developer nor the names of its |
| | | * contributors may be used to endorse or promote products derived from |
| | | * this software without specific prior written permission. |
| | | * Author: ztt |
| | | */ |
| | | export const object = { |
| | | border: true, |
| | | index: true, |
| | | height: '300px', |
| | | expandFixed: true, |
| | | indexLabel: 'åºå·', |
| | | stripe: true, |
| | | menuAlign: 'center', |
| | | searchMenuSpan: 6, |
| | | editBtn: false, |
| | | delBtn: true, |
| | | align: 'center', |
| | | addBtn: false, |
| | | viewBtn: false, |
| | | refreshBtn: false, |
| | | columnBtn: false, |
| | | column: [{ |
| | | label: '项ç®', |
| | | width: 260, |
| | | prop: 'name', |
| | | span: 24, |
| | | type: 'text', |
| | | cell: true, |
| | | }, { |
| | | width: 260, |
| | | label: 'åä½', |
| | | prop: 'unit', |
| | | span: 24, |
| | | type: 'text', |
| | | cell: true, |
| | | }, { |
| | | width: 260, |
| | | label: 'æ åå¼', |
| | | prop: 'required', |
| | | type: 'text', |
| | | span: 24, |
| | | cell: true, |
| | | }, { |
| | | label: 'æ£æµå¼', |
| | | prop: 'testValue', |
| | | type: 'text', |
| | | width: 260, |
| | | slot: true, |
| | | formSlot: true, |
| | | cell: true, |
| | | }, { |
| | | label: 'è¯éªè®¾å¤', |
| | | prop: 'deviceName', |
| | | type: 'select', |
| | | cell: true, |
| | | slot: true, |
| | | formSlot: true, |
| | | width: 260 |
| | | },{ |
| | | label: 'ç»è®º', |
| | | prop: 'testState', |
| | | type: 'text', |
| | | slot: true, |
| | | formSlot: true, |
| | | hide: false, |
| | | fixed: 'right' |
| | | }] |
| | | } |
| | | |
| | | export const conclusion = { |
| | | border: true, |
| | | index: true, |
| | | height: '300px', |
| | | indexLabel: 'åºå·', |
| | | stripe: true, |
| | | menuAlign: 'center', |
| | | searchMenuSpan: 6, |
| | | editBtn: false, |
| | | delBtn: false, |
| | | align: 'center', |
| | | addBtn: false, |
| | | viewBtn: false, |
| | | refreshBtn: false, |
| | | columnBtn: false, |
| | | column: [{ |
| | | label: 'ç©æç¼å·', |
| | | prop: 'code', |
| | | span: 24, |
| | | type: 'text', |
| | | }, { |
| | | label: 'ç©æåç§°', |
| | | prop: 'name', |
| | | span: 24, |
| | | type: 'text', |
| | | }, { |
| | | label: 'æ£éªå', |
| | | prop: 'userName', |
| | | type: 'text', |
| | | span: 24, |
| | | }, { |
| | | label: 'æ£éªç»è®º', |
| | | prop: 'testState', |
| | | type: 'text', |
| | | }] |
| | | } |
| | |
| | | ] |
| | | }, |
| | | { |
| | | path: '/quality/rawMaterial', |
| | | component: Layout, |
| | | children: [ |
| | | { |
| | | path: 'rawMaterial-form', |
| | | name: 'rawMaterialForm', |
| | | component: () => |
| | | import(/* webpackChunkName: "views" */ '@/views/quality/rawMaterial/rawMaterial-form'), |
| | | meta: { |
| | | keepAlive: false, |
| | | isTab: false, |
| | | isAuth: false |
| | | } |
| | | } |
| | | ] |
| | | }, |
| | | { |
| | | path: '/quality/newReport', |
| | | component: Layout, |
| | | children: [ |
| | |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'operationName', |
| | | label: 'å·¥åºåç§°', |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'remark', |
| | | label: '夿³¨', |
| | | sort: true, |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { delObj, fetchList } from '@/api/equipment/equipment' |
| | | import { delObj, fetchList,pullEquip } from '@/api/equipment/equipment' |
| | | import TableForm from './equipment-form' |
| | | import ttable from '@/views/common/ztt-table.vue' |
| | | import { mapGetters } from 'vuex' |
| | |
| | | label: 'ç¶æ', |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: false, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | } |
| | | ], |
| | |
| | | text: 'æ°å¢', |
| | | type: 'primary', |
| | | fun: this.addOrUpdateHandle |
| | | }, |
| | | { |
| | | text: '忥', |
| | | type: 'primary', |
| | | loading: false, |
| | | fun: this.pullEquipFun |
| | | } |
| | | ], |
| | | operator: [ |
| | |
| | | }) |
| | | }, |
| | | methods: { |
| | | pullEquipFun(){ |
| | | this.table.toolbar.find((e) => e.text === '忥').loading = true |
| | | pullEquip().then(res=>{ |
| | | this.$message.success(res.data.data.msg) |
| | | this.table.toolbar.find((e) => e.text === '忥').loading = false |
| | | }).catch(error=>{ |
| | | this.$message.error("åæ¥å¤±è´¥",error) |
| | | this.getData() |
| | | this.table.toolbar.find((e) => e.text === '忥').loading = false |
| | | }) |
| | | }, |
| | | workShopFormatter(row, column, cellValue) { |
| | | this.workshopList.forEach((obj) => { |
| | | if (obj.value == cellValue) { |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="æ¶è´§å°å" prop="shippingAddress"> |
| | | <el-form-item label="å·¥èºæä»¶åç§°" prop="docName"> |
| | | <el-input |
| | | v-model="dataForm.shippingAddress" |
| | | v-model="dataForm.docName" |
| | | placeholder="" |
| | | disabled |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </el-col> --> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-form-item label="æ¶è´§å°å" prop="shippingAddress"> |
| | | <el-input |
| | | v-model="dataForm.shippingAddress" |
| | | placeholder="" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <!-- <el-col :span="6"> |
| | | <el-form-item label="OTCæ¨éç¶æ" prop="remark"> |
| | | <span>{{ |
| | |
| | | productType: '', |
| | | partNo: '', |
| | | docNumber: '', |
| | | docName: '', |
| | | shippingAddress: '', |
| | | remark: '', |
| | | otcUnit: '', |
| | |
| | | // }) |
| | | // } |
| | | if (this.permissions.customerorder_submit_oa) { |
| | | // this.table.toolbar.push({ |
| | | // text: 'æäº¤å®¡æ ¸', |
| | | // type: 'primary', |
| | | // fun: this.auditCustomerOrder, |
| | | // disabled: false, |
| | | // permitArr: [], |
| | | // loading: false |
| | | // }) |
| | | this.table.toolbar.push({ |
| | | text: 'æäº¤å®¡æ ¸', |
| | | type: 'primary', |
| | | fun: this.auditCustomerOrder, |
| | | disabled: false, |
| | | permitArr: [], |
| | | loading: false |
| | | }) |
| | | } |
| | | if (this.permissions.customerorder_set_salesparts) { |
| | | this.table.toolbar.push({ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <!-- |
| | | - Copyright (c) 2018-2025, ztt All rights reserved. |
| | | - |
| | | - Redistribution and use in source and binary forms, with or without |
| | | - modification, are permitted provided that the following conditions are met: |
| | | - |
| | | - Redistributions of source code must retain the above copyright notice, |
| | | - this list of conditions and the following disclaimer. |
| | | - Redistributions in binary form must reproduce the above copyright |
| | | - notice, this list of conditions and the following disclaimer in the |
| | | - documentation and/or other materials provided with the distribution. |
| | | - Neither the name of the pig4cloud.com developer nor the names of its |
| | | - contributors may be used to endorse or promote products derived from |
| | | - this software without specific prior written permission. |
| | | - Author: ztt |
| | | --> |
| | | <template> |
| | | <div class="mod-config"> |
| | | <basic-container> |
| | | <ttable |
| | | :table="table" |
| | | @handleSelectionChange="handleSelectionChange" |
| | | :prelang="prelang" |
| | | :options="options" |
| | | :ajaxFun="ajaxFun" |
| | | ref="rawMaterialTable"> |
| | | <template #toolbar></template> |
| | | </ttable> |
| | | </basic-container> |
| | | <!-- å¼¹çª, æ°å¢ / ä¿®æ¹ --> |
| | | <RawMaterialForm |
| | | v-if="addOrUpdateVisible" |
| | | ref="addOrUpdate" |
| | | @refreshDataList="getData" |
| | | ></RawMaterialForm> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import ttable from '@/views/common/ztt-table.vue' |
| | | import { getRawInspectList,delObj } from '@/api/quality/rawMaterial' |
| | | import RawMaterialForm from './rawMaterial-form' |
| | | import * as fecha from 'element-ui/lib/utils/date' |
| | | import { mapGetters } from 'vuex' |
| | | export default { |
| | | data() { |
| | | return { |
| | | addOrUpdateVisible: false, |
| | | type: [1], |
| | | prelang: 'rawMaterial', |
| | | ajaxFun: getRawInspectList, |
| | | 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: 'formTime', direction: 'desc' }, |
| | | }, |
| | | table: { |
| | | total: 0, |
| | | currentPage: 1, |
| | | pageSize: 20, |
| | | data: [], |
| | | // æ é¢ |
| | | column: [ |
| | | { |
| | | minWidth: '120', |
| | | prop: 'code', |
| | | label: 'åææç¼ç ', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | render: { fun: this.addOrUpdateHandle } |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'name', |
| | | label: 'åææåç§°', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | }, |
| | | { |
| | | minWidth: '130', |
| | | width: '150', |
| | | prop: 'formTime', |
| | | label: 'æ¥ææ¥æ', |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'datetimerange', |
| | | formatter: this.formatDateTime, |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'specs', |
| | | label: 'è§æ ¼åå·', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'unit', |
| | | label: 'åä½', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'number', |
| | | label: 'æ°é', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'createTime', |
| | | label: 'æ¥æ£æ¥æ', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | formatter: this.formatDateTime, |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'createUser', |
| | | label: 'æ¥æ£äºº', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'insTime', |
| | | label: 'æ£éªæ¥æ', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | formatter: this.formatDateTime, |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'insState', |
| | | label: 'æ£æµç¶æ', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'select', |
| | | formatter: this.formatInsState, |
| | | optList: () => { |
| | | return this.insStateList |
| | | } |
| | | }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'judgeState', |
| | | label: 'åæ ¼ç¶æ', |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text', |
| | | formatter: this.formatJudgeState, |
| | | }, |
| | | ], |
| | | toolbar: [ |
| | | { |
| | | text: 'æ°å¢', |
| | | type: 'primary', |
| | | fun: this.addOrUpdateHandle |
| | | }, |
| | | { |
| | | text: '导åº', |
| | | } |
| | | ], |
| | | operator: [{ |
| | | text: 'æå°', |
| | | type: 'text', |
| | | size: 'small', |
| | | },{ |
| | | text: 'ä½åº', |
| | | type: 'text', |
| | | size: 'small', |
| | | fun: this.deleteHandle |
| | | }], |
| | | operatorConfig: { |
| | | fixed: 'right', |
| | | label: 'æä½', |
| | | width: 100, |
| | | minWidth: 100 |
| | | }, |
| | | }, |
| | | insStateList: [{label:'å
¨é¨',value:''},{label:'å·²æ£æµ',value:'1'},{label:'æªæ£æµ',value:'0'}] |
| | | } |
| | | }, |
| | | components: { |
| | | ttable, |
| | | RawMaterialForm, |
| | | }, |
| | | created() { |
| | | }, |
| | | computed: { |
| | | ...mapGetters(['permissions']) |
| | | }, |
| | | methods:{ |
| | | // å é¤ |
| | | deleteHandle(row) { |
| | | this.$confirm('æ¯å¦ç¡®è®¤å é¤è¯¥æ°æ®ï¼' + row.code , 'æç¤º', { |
| | | confirmButtonText: 'ç¡®å®', |
| | | cancelButtonText: 'åæ¶', |
| | | closeOnClickModal: false, |
| | | type: 'warning' |
| | | }).then(function() { |
| | | return delObj(row.id) |
| | | }).then((response) => { |
| | | var data = response.data |
| | | if (data.code == 0) { |
| | | this.$message.success('å 餿å') |
| | | } else { |
| | | this.$message.error('å é¤å¤±è´¥') |
| | | } |
| | | this.getData() |
| | | }) |
| | | }, |
| | | // æ°å¢ / ä¿®æ¹ |
| | | addOrUpdateHandle(row) { |
| | | this.$router.push({ |
| | | name: 'rawMaterialForm', |
| | | query: { id: row == null ? null : row.id } |
| | | }) |
| | | }, |
| | | formatInsState(row, column, cellValue){ |
| | | if(cellValue != undefined || cellValue != null){ |
| | | if(cellValue == 0){ |
| | | return "<span style='color:#E84738;'>æªæ£æµ</span>" |
| | | } |
| | | return "<span style='color:#34BD66;'>å·²æ£æµ</span>" |
| | | } |
| | | }, |
| | | formatJudgeState(row, column, cellValue){ |
| | | if(cellValue != undefined || cellValue != null){ |
| | | if(cellValue == 0){ |
| | | return "<span style='color:#E84738;'>ä¸åæ ¼</span>" |
| | | } |
| | | return "<span style='color:#34BD66;'>åæ ¼</span>" |
| | | } |
| | | }, |
| | | formatDateTime(row, column, cellValue) { |
| | | return cellValue ? fecha.format(new Date(cellValue), 'yyyy-MM-dd') : '' |
| | | }, |
| | | getData() { |
| | | this.$refs.rawMaterialTable.getDataList() |
| | | }, |
| | | // tableèªå¸¦äºä»¶ |
| | | handleSelectionChange(val) { |
| | | // æ ¹æ®ç¶æï¼ç¦ç¨è¡¨å¤´æé® |
| | | // çéåºéä¸è®°å½çç¶æ |
| | | 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]) |
| | | } |
| | | } |
| | | // 循ç¯èªå®ä¹æé®ï¼å¤ææ¯ä¸ªæé®çpermitArræ¯å¦å®å
¨å
å«éä¸ç¶æï¼è¥å®å
¨å
å«ï¼åæé®äº®ï¼å¦åæé®ç° |
| | | 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 |
| | | }, |
| | | } |
| | | } |
| | | </script> |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <template> |
| | | <div style="height: 100%"> |
| | | <div class="page-header"> |
| | | <div class="header-left"> |
| | | <a @click="$router.go(-1)"><i class="icon-btn-back"></i></a> |
| | | <h2>ç¼è¾-åæææ£éª</h2> |
| | | </div> |
| | | <div class="btn-group header-right"> |
| | | <el-button @click="save()">ä¿å</el-button> |
| | | </div> |
| | | </div> |
| | | <div class="page-main"> |
| | | <div class="rawMaterial-basic"> |
| | | <el-row style="width:100%;height:20px;margin-bottom:20px;" v-show="dataForm.id==null"> |
| | | <el-col :span="20"> |
| | | <span style="color:red;font-size:18px;padding: 0;margin: 0;">è¯·æ«æäºç»´ç è·åæ°æ®</span> |
| | | </el-col> |
| | | <el-col :span="4" style="text-align: right;"> |
| | | <el-button>æ«æäºç»´ç </el-button> |
| | | </el-col> |
| | | </el-row> |
| | | <el-form |
| | | :model="dataForm" |
| | | :rules="dataRule" |
| | | ref="dataForm" |
| | | style="width: 100%" |
| | | class="l-mes" |
| | | label-width="110px"> |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-form-item prop="formTime" label="æ¥ææ¥æ"> |
| | | <el-date-picker |
| | | v-model="dataForm.formTime" |
| | | type="datetime" |
| | | value-format="yyyy-MM-dd HH:mm:ss" |
| | | disabled> |
| | | |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item prop="name" label="åææåç§°"> |
| | | <el-input v-model="dataForm.name" disabled > |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="åææç¼ç " prop="code"> |
| | | <el-input v-model="dataForm.code" disabled></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="è§æ ¼åå·" prop="specs"> |
| | | <el-input v-model="dataForm.specs" disabled></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-form-item prop="unit" label="åä½"> |
| | | <el-input |
| | | v-model="dataForm.unit" |
| | | disabled |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="ä¾åºååç§°" prop="supplier"> |
| | | <el-input v-model="dataForm.supplier" disabled /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="æ°é" prop="number"> |
| | | <el-input v-model="dataForm.number" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="æ¥æ£æ¥æ" prop="createTime" v-if="dataForm.id!=null"> |
| | | <el-input v-model="dataForm.createTime" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="6"> |
| | | <el-form-item label="æ¥æ£äºº" prop="createUser" v-if="dataForm.id!=null"> |
| | | <el-input v-model="dataForm.createUser" /> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | | <div class="rawMaterial-detail"> |
| | | <el-row style="width:100%;z-index: 10;height:50px;"> |
| | | <el-col :span="19">æ£éªé¡¹ç®</el-col> |
| | | <el-col :span="5"> |
| | | <div style="width:100%;text-align: right;"> |
| | | <el-button v-show="dataForm.id==null" size="small" @click="clickAddLine">æ·»å æ£éªè¡</el-button> |
| | | <el-button size="small" @click="addTeatValueColumn()">æ·»å æ£éªå¼å</el-button> |
| | | <el-button size="small" @click="delTeatValueColumn()">å 餿£éªå¼å</el-button> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-row style="width:100%;margin-top:-30px"> |
| | | <el-col :span="24"> |
| | | <avue-crud |
| | | ref="crud" |
| | | :option="tableOption" |
| | | @current-row-change="changeEquipment" |
| | | :data="list" |
| | | v-model="form"> |
| | | <template slot="testValue" slot-scope="scope"> |
| | | <el-tooltip :disabled="scope.row.equipmentId != null" class="item" effect="dark" content="请å
éæ©è®¾å¤ï¼" |
| | | placement="top-start"> |
| | | <el-input :disabled="scope.row.equipmentId == null" v-model="scope.row.testValue" |
| | | @blur="updateTestValue(scope.row)" placeholder="请è¾å
¥æ£æµå¼"></el-input> |
| | | </el-tooltip> |
| | | </template> |
| | | <template slot="deviceName" slot-scope="scope"> |
| | | <el-select v-model="scope.row.equipmentId" filterable> |
| | | <el-option v-for="(item,index) in deviceList" |
| | | :key="index" :value="item.id" :label="item.number +'-'+ item.name"></el-option> |
| | | </el-select> |
| | | </template> |
| | | <template slot="testState" slot-scope="scope"> |
| | | <span v-if="scope.row.testState == 0" style="color:#F56C6C">ä¸åæ ¼</span> |
| | | <span v-else-if="scope.row.testState == 1" style="color:#67C23A">åæ ¼</span> |
| | | <span v-else>ææ ç»è®º</span> |
| | | </template> |
| | | </avue-crud> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <div class="rawMaterial-detail"> |
| | | <el-row> |
| | | <el-col :span="24">æ£éªç»è®º</el-col> |
| | | </el-row> |
| | | <el-row style="width:100%"> |
| | | <el-col :span="24"> |
| | | <avue-crud |
| | | ref="conclusion" |
| | | :option="option" |
| | | :data="conclusionTable" |
| | | v-model="conclusion"> |
| | | <template #menu> |
| | | <el-button type="text" size="small">䏿¥</el-button> |
| | | </template> |
| | | </avue-crud> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import { object,conclusion } from '@/const/crud/quality/rawMaterial' |
| | | import { selectDevice,addRawInspects,getObj,updateRawInsProduct } from '@/api/quality/rawMaterial' |
| | | export default { |
| | | data(){ |
| | | return{ |
| | | columnIndex: 2, |
| | | columnList: [], |
| | | dataForm:{ |
| | | id: null, |
| | | formTime: '2023-10-28 00:00:00', |
| | | name: 'name', |
| | | code: 'code4', |
| | | specs: 'specs', |
| | | unit: 'mm', |
| | | number: '111', |
| | | supplier: 'supplier', |
| | | rawInsProducts: null, |
| | | }, |
| | | form: null, |
| | | list:[], |
| | | conclusion: null, |
| | | conclusionTable: [{ |
| | | code: '', |
| | | name: '', |
| | | userName: '', |
| | | testState: '' |
| | | }], |
| | | tableOption: object, |
| | | option: conclusion, |
| | | dataRule: {}, |
| | | deviceList: [], |
| | | } |
| | | }, |
| | | mounted(){ |
| | | this.dataForm.id = this.$route.query.id |
| | | this.init() |
| | | let isShow = this.dataForm.id == null ? true : false |
| | | this.tableOption.menu = isShow |
| | | let len = this.tableOption.column.length |
| | | this.tableOption.column[len-1].hide = isShow |
| | | this.getDeviceList() |
| | | }, |
| | | watch:{ |
| | | 'columnList.length':function(newVal){ |
| | | const column = [{ |
| | | label: '项ç®', |
| | | width: 260, |
| | | prop: 'name', |
| | | span: 24, |
| | | type: 'text', |
| | | cell: true, |
| | | }, { |
| | | width: 260, |
| | | label: 'åä½', |
| | | prop: 'unit', |
| | | span: 24, |
| | | type: 'text', |
| | | cell: true, |
| | | }, { |
| | | width: 260, |
| | | label: 'æ åå¼', |
| | | prop: 'required', |
| | | type: 'text', |
| | | span: 24, |
| | | cell: true, |
| | | }, { |
| | | label: 'æ£æµå¼', |
| | | prop: 'testValue', |
| | | type: 'text', |
| | | width: 260, |
| | | slot: true, |
| | | formSlot: true, |
| | | cell: true, |
| | | }, { |
| | | label: 'è¯éªè®¾å¤', |
| | | prop: 'deviceName', |
| | | type: 'select', |
| | | cell: true, |
| | | slot: true, |
| | | formSlot: true, |
| | | width: 260 |
| | | },{ |
| | | label: 'ç»è®º', |
| | | prop: 'testState', |
| | | type: 'text', |
| | | slot: true, |
| | | formSlot: true, |
| | | hide: true, |
| | | fixed: 'right' |
| | | }] |
| | | if(newVal > 0){ |
| | | if(this.columnList.length > 0){ |
| | | this.tableOption.column = column |
| | | this.columnList.forEach(item=>{ |
| | | this.tableOption.column.splice(4,0,item) |
| | | }) |
| | | } |
| | | }else{ |
| | | this.tableOption.column = column |
| | | } |
| | | }, |
| | | }, |
| | | methods:{ |
| | | changeEquipment(current,old){ |
| | | console.log(current,old) |
| | | }, |
| | | addTeatValueColumn(){ |
| | | let propName = 'testValue' + this.columnIndex |
| | | this.columnList.push({ |
| | | label: 'æ£æµå¼', |
| | | prop: propName, |
| | | type: 'text', |
| | | width: 260, |
| | | $cellEdit: true, |
| | | disabled: this.list[0].equiomentId == null |
| | | }) |
| | | this.columnIndex+=1 |
| | | }, |
| | | delTeatValueColumn(){ |
| | | this.columnList.pop() |
| | | }, |
| | | updateTestValue(row){ |
| | | if(row.rpId == null){ |
| | | return |
| | | } |
| | | let obj = { |
| | | equiomentId: row.equipmentId, |
| | | rpId: row.rpId, |
| | | testValue: row.testValue |
| | | } |
| | | updateRawInsProduct(obj).then(res=>{ |
| | | if(res.data.code === 0){ |
| | | this.$message.success("æ´æ°æå") |
| | | this.init() |
| | | }else{ |
| | | this.$message.success("æ´æ°å¤±è´¥") |
| | | } |
| | | }).catch(error=>{ |
| | | this.$message.error(error) |
| | | }) |
| | | }, |
| | | init(){ |
| | | if(this.dataForm.id){ |
| | | getObj(this.dataForm.id).then(res=>{ |
| | | let data = res.data.data |
| | | this.dataForm.name = data.name |
| | | this.dataForm.formTime = data.formTime |
| | | this.dataForm.code = data.code |
| | | this.dataForm.specs = data.specs |
| | | this.dataForm.unit = data.runit |
| | | this.dataForm.supplier = data.supplier |
| | | this.dataForm.number = data.number |
| | | this.dataForm.createTime = data.creatTime |
| | | this.dataForm.createUser = data.createUser |
| | | let userNameList = [] |
| | | this.list = [] |
| | | data.children.forEach(item=>{ |
| | | userNameList.push(item.userName) |
| | | this.list.push({ |
| | | equipmentId: item.equiomentId, |
| | | name: item.rpName, |
| | | required: item.required, |
| | | testValue: item.testValue, |
| | | unit: item.rpUnit, |
| | | testState: item.testState, |
| | | rpId: item.rpId |
| | | }) |
| | | }) |
| | | this.conclusionTable = [{ |
| | | code: data.code, |
| | | name: data.name, |
| | | userName: Array.from(new Set(userNameList)).join(','), |
| | | testState: '' |
| | | }] |
| | | }).catch(error=>{ |
| | | this.$message.error("è·å失败",error) |
| | | }) |
| | | }else{ |
| | | this.conclusionTable = [] |
| | | this.tableOption.column = object.column |
| | | } |
| | | }, |
| | | save(){ |
| | | let data = this.dataForm |
| | | data.rawInsProducts = this.list |
| | | console.log(this.list) |
| | | return |
| | | addRawInspects(data).then(res=>{ |
| | | this.$message.success("ä¿åæå") |
| | | }).catch(error=>{ |
| | | this.$message.error(error) |
| | | }) |
| | | }, |
| | | // æ·»å è¡ |
| | | clickAddLine() { |
| | | let obj = { |
| | | $cellEdit: true, |
| | | equipmentId: null, |
| | | name: "", |
| | | required: "", |
| | | testValue: "", |
| | | unit: "" |
| | | }; |
| | | this.list.push(obj); |
| | | }, |
| | | getDeviceList(){ |
| | | selectDevice(null).then(res=>{ |
| | | this.deviceList = res.data.data |
| | | }) |
| | | }, |
| | | }, |
| | | computed:{}, |
| | | components:{} |
| | | } |
| | | </script> |
| | | |
| | | <style> |
| | | .rawMaterial-detail { |
| | | width: 100%; |
| | | height: 400px; |
| | | padding: 10px 20px; |
| | | display: flex; |
| | | border: 1px solid #ddd; |
| | | background-color: #fff; |
| | | margin-top: 10px; |
| | | box-sizing: border-box; |
| | | flex-wrap: wrap; |
| | | } |
| | | |
| | | .rawMaterial-basic { |
| | | background-color: #fff; |
| | | height: 150px; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | padding: 10px 20px; |
| | | border: 1px solid #ddd; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .rawMaterial-related-stock-part { |
| | | background-color: #fff; |
| | | width: 100%; |
| | | height: 220px; |
| | | border: 1px solid #ddd; |
| | | padding: 10px 20px 0px 20px; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .rawMaterial-bom { |
| | | background-color: #fff; |
| | | width: 100%; |
| | | height: 499px; |
| | | border: 1px solid #ddd; |
| | | padding: 10px 20px; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .rawMaterial-bom .el-card__header { |
| | | padding: 1px 20px; |
| | | border-bottom: 0px solid #ebeef5; |
| | | } |
| | | |
| | | .rawMaterial-bom .el-card__body { |
| | | height: calc(100% - 22px); |
| | | } |
| | | |
| | | .rawMaterial-bom .el-card__body .el-collapse { |
| | | height: 100%; |
| | | overflow: auto; |
| | | } |
| | | |
| | | .rawMaterial-technology-params { |
| | | background-color: #fff; |
| | | width: calc(52% - 20px); |
| | | float: left; |
| | | height: 719px; |
| | | border: 1px solid #ddd; |
| | | padding: 10px 20px; |
| | | margin-left: 20px; |
| | | } |
| | | |
| | | .rawMaterial-structure { |
| | | background-color: #fff; |
| | | width: 35%; |
| | | float: left; |
| | | height: 719px; |
| | | border: 1px solid #ddd; |
| | | padding: 10px 20px; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | .rawMaterial-flow { |
| | | background-color: #fff; |
| | | width: calc(65% - 20px); |
| | | float: left; |
| | | height: 719px; |
| | | border: 1px solid #ddd; |
| | | padding: 10px 20px; |
| | | margin-left: 20px; |
| | | box-sizing: border-box; |
| | | } |
| | | |
| | | /*èªå®ä¹disabledç¶æä¸checkboxçæ ·å¼*/ |
| | | .completeproductstructure-checkout |
| | | .el-checkbox__input.is-disabled.is-checked |
| | | .el-checkbox__inner { |
| | | background-color: #006eff; |
| | | border-color: #006eff; |
| | | } |
| | | |
| | | .completeproductstructure-checkout |
| | | .el-checkbox__input.is-disabled.is-checked |
| | | + span.el-checkbox__label { |
| | | color: #006eff; |
| | | border-color: #006eff; |
| | | } |
| | | |
| | | .completeproductstructure-checkout |
| | | .el-checkbox__input.is-disabled |
| | | .el-checkbox__inner { |
| | | background-color: #ffffff; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .completeproductstructure-checkout |
| | | .el-checkbox__input.is-disabled |
| | | + span.el-checkbox__label { |
| | | color: #606266; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .completeproductstructure-checkout .el-checkbox__inner::after { |
| | | border: 1px solid #fff !important; |
| | | border-left: 0 !important; |
| | | border-top: 0 !important; |
| | | cursor: pointer !important; |
| | | } |
| | | |
| | | .rawMaterial-bom-div { |
| | | width: 100%; |
| | | margin-bottom: 5px; |
| | | } |
| | | |
| | | .rawMaterial-technology-div { |
| | | width: 100%; |
| | | margin-bottom: 5px; |
| | | margin-right: 10px; |
| | | } |
| | | |
| | | .rawMaterial-technology-div .el-collapse { |
| | | border-top: 0px; |
| | | border-bottom: 0px; |
| | | } |
| | | |
| | | .structure-detail-table th.gutter { |
| | | display: table-cell !important; |
| | | width: 10px !important; |
| | | } |
| | | |
| | | .structure-detail-table colgroup.gutter { |
| | | display: table-cell !important; |
| | | width: 10px !important; |
| | | } |
| | | |
| | | .final-product-checkout .el-card__header { |
| | | padding: 0px 20px; |
| | | border-bottom: 0px; |
| | | } |
| | | |
| | | .final-product-checkout .el-card__body { |
| | | padding: 0px 20px 20px; |
| | | } |
| | | |
| | | .orimaterial-quantity .el-card__header { |
| | | padding: 0px 20px; |
| | | border-bottom: 0px; |
| | | } |
| | | |
| | | .orimaterial-quantity .el-card__body { |
| | | padding: 0px 20px 20px; |
| | | } |
| | | |
| | | .rawMaterial-materialcost-table th.gutter { |
| | | display: table-cell !important; |
| | | width: 10px !important; |
| | | } |
| | | |
| | | .rawMaterial-materialcost-table colgroup.gutter { |
| | | display: table-cell !important; |
| | | width: 10px !important; |
| | | } |
| | | |
| | | .GooFlow .ico .ico_start:before { |
| | | color: red; |
| | | } |
| | | .highlight-tab-class { |
| | | color: #006eff; |
| | | background: #e4e7ed; |
| | | border-top: 1px solid #006eff; |
| | | } |
| | | .unhighlight-tab-class { |
| | | border: 1px solid #e4e7ed; |
| | | border-bottom: none; |
| | | } |
| | | </style> |
| | |
| | | label-width="110px" |
| | | > |
| | | <el-row> |
| | | <el-col :span="5"> |
| | | <el-col :span="6"> |
| | | <el-form-item prop="name" label="æä»¶åç§°"> |
| | | <el-input |
| | | v-model="dataForm.name" |
| | |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-col :span="6"> |
| | | <el-form-item prop="number" label="æä»¶ç¼å·"> |
| | | <el-input v-model="dataForm.number" placeholder="æä»¶ç¼å·"> |
| | | </el-input> |
| | |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> --> |
| | | <el-col :span="3"> |
| | | <el-form-item prop="version" label="çæ¬å·"> |
| | | <el-input |
| | | v-model="dataForm.version" |
| | | placeholder="çæ¬å·" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <!-- <el-col :span="3"> |
| | | <el-form-item prop="sheathColor" label="æ¤å¥é¢è²"> |
| | | <el-input |
| | |
| | | </el-col> |
| | | </el-row> |
| | | <el-row> |
| | | <el-col :span="5"> |
| | | <el-form-item label="夿³¨" prop="remark"> |
| | | <el-input |
| | | type="textarea" |
| | | v-model="dataForm.remark" |
| | | placeholder="夿³¨" |
| | | style="width:360px" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item prop="version" label="çæ¬å·"> |
| | | <el-input |
| | | v-model="dataForm.version" |
| | | placeholder="çæ¬å·" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="BOM" prop="bomId"> |
| | | <el-select |
| | | :disabled="dataForm.id != null" |
| | | v-model="dataForm.bomId" |
| | | placeholder="" |
| | | style="width: 100%;" |
| | | filterable> |
| | | <el-option |
| | | v-for="item in bomList" |
| | | :key="item.id" |
| | | :label="item.number" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="å·¥èºè·¯çº¿ç¼å·" prop="routingList"> |
| | | <el-select |
| | | :disabled="dataForm.id != null" |
| | | v-model="dataForm.routingId" |
| | | placeholder="" |
| | | style="width: 100%;" |
| | | filterable> |
| | | <el-option |
| | | v-for="item in routingList" |
| | | :key="item.id" |
| | | :label="item.routing_no" |
| | | :value="item.id" |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col :span="6"> |
| | | <el-form-item label="夿³¨" prop="remark"> |
| | | <el-input |
| | | type="textarea" |
| | | v-model="dataForm.remark" |
| | | placeholder="夿³¨" |
| | | style="width:100%" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | |
| | | <div class="document-detail"> |
| | | <el-tabs type="card" style="width: 100%;height: 100%"> |
| | | <el-tab-pane |
| | | label="åæç¨é" |
| | | label="åææç¨é" |
| | | style="height: 100%" |
| | | class="orimaterial-quantity" |
| | | > |
| | |
| | | align="center" |
| | | > |
| | | </el-table-column> |
| | | <el-table-column label="ç©æç¼å·" prop="partNo" align="center"> |
| | | </el-table-column> |
| | | <el-table-column label="ç©æ" prop="partName" align="center"> |
| | | </el-table-column> |
| | | <el-table-column label="æ°é" prop="quantity" align="center"> |
| | |
| | | </TeststandardDialog> |
| | | </el-tab-pane> |
| | | <el-tab-pane label="产åç»æå·¥åºåæ°" style="height: 100%"> |
| | | <!-- <div class="document-related-stock-part"> |
| | | <div class="document-related-stock-part"> |
| | | <div |
| | | style="padding-left:18px;font-size:14px;font-weight:700;color:#000;height:20px;line-height:20px;" |
| | | > |
| | |
| | | > |
| | | </el-table-column> |
| | | </el-table> |
| | | </div> --> |
| | | </div> |
| | | <el-card class="document-bom" header=""> |
| | | <!-- <div slot="header"> |
| | | <span>BOM-å·¥åºåæ°</span> |
| | |
| | | import { delDocumentSamplingRule } from '@/api/quality/documentsamplingrule' |
| | | import { getObj as getTechnologyDetail } from '@/api/technology/routing' |
| | | import { getObj as getStructureDetail } from '@/api/technology/completeproductstructure' |
| | | import { fetchList as getBomList } from '@/api/technology/completeproductstructure' |
| | | import { getRouting } from '@/api/technology/document' |
| | | import { getTestStandardParams } from '@/api/quality/teststandard' |
| | | import { remote } from '@/api/admin/dict' |
| | | import { fetchList as getStandard } from '@/api/quality/standardbind' |
| | |
| | | export default { |
| | | data() { |
| | | return { |
| | | bomList: [], |
| | | routingList: [], |
| | | operationPart: {}, |
| | | showCompleteproductstructure: false, |
| | | showTechnology: false, |
| | |
| | | ], |
| | | dataForm: { |
| | | id: null, |
| | | bomId: null, |
| | | routingId: null, |
| | | number: null, |
| | | name: null, |
| | | version: null, |
| | |
| | | window.winDbClick = this.getDbClick |
| | | // åå§åæµç¨å¾å®ä¾ |
| | | this.initFlowDesign() |
| | | }, |
| | | watch: { |
| | | 'dataForm.partId'(newValue, oldValue) { |
| | | if (oldValue) { |
| | | this.dataForm.bomId = null |
| | | } |
| | | if (newValue) { |
| | | getBomList( |
| | | Object.assign({ |
| | | current: 1, |
| | | size: 999, |
| | | partId: this.dataForm.partId, |
| | | }) |
| | | ).then((response) => { |
| | | this.bomList = response.data.data.records |
| | | }) |
| | | } else { |
| | | this.bomList = [] |
| | | } |
| | | }, |
| | | 'dataForm.bomId'(newValue, oldValue) { |
| | | if (oldValue) { |
| | | this.dataForm.routingId = null |
| | | } |
| | | if (newValue) { |
| | | getRouting( |
| | | Object.assign({ |
| | | bomId: this.dataForm.bomId, |
| | | }) |
| | | ).then((response) => { |
| | | console.log(response) |
| | | this.routingList = response.data.data |
| | | }) |
| | | } else { |
| | | this.routingList = [] |
| | | } |
| | | }, |
| | | }, |
| | | methods: { |
| | | // æ¥è¯¢ç±»ååå
¸ |
| | |
| | | allKeyValues = allKeyValues.concat(keyValues) |
| | | i = i + keyValues.length |
| | | } |
| | | console.log("aaa--",allKeyValues) |
| | | this.materialCostList = allKeyValues |
| | | }, |
| | | objectSpanMethod({ row, column, rowIndex, columnIndex }) { |
| | |
| | | }, |
| | | getSummaries(param) { |
| | | const { columns, data } = param |
| | | console.log(columns, 'A') |
| | | console.log(data, 'B') |
| | | // console.log(columns, 'A') |
| | | // console.log(data, 'B') |
| | | const sums = [] |
| | | columns.forEach((column, index) => { |
| | | if (index === 0) { |
| | |
| | | // } |
| | | // }, |
| | | // çç»äººå |
| | | { |
| | | minWidth: '120', |
| | | prop: 'crewSize', |
| | | label: 'çç»äººå', |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'text' |
| | | }, |
| | | // { |
| | | // minWidth: '120', |
| | | // prop: 'crewSize', |
| | | // label: 'çç»äººå', |
| | | // sort: true, |
| | | // isTrue: true, |
| | | // isSearch: true, |
| | | // searchInfoType: 'text' |
| | | // }, |
| | | { |
| | | minWidth: '120', |
| | | prop: 'outsideOpItem', |
| | |
| | | /> |
| | | </el-select> |
| | | </el-form-item> --> |
| | | <el-form-item label="çç»äººå" prop="crewSize"> |
| | | <!-- <el-form-item label="çç»äººå" prop="crewSize"> |
| | | <el-input |
| | | v-model="dataForm.crewSize" |
| | | placeholder="çç»äººå" |
| | | ></el-input> |
| | | </el-form-item> |
| | | </el-form-item> --> |
| | | <!-- <el-form-item label="å¤é¨å·¥åºé¡¹ç®" prop="outsideOpItem"> |
| | | <el-select |
| | | v-model="dataForm.outsideOpItem" |
| | |
| | | laborRunFactor: 0, |
| | | laborSetupTime: 0, |
| | | runTimeCodeDb: '2', |
| | | crewSize: 1, |
| | | crewSize: null, |
| | | outsideOpItem:null |
| | | }, |
| | | operationTemplateList: [], |
| | |
| | | this.dataForm.laborRunFactor = 0 |
| | | this.dataForm.laborSetupTime = 0 |
| | | this.dataForm.runTimeCodeDb = '2' |
| | | this.dataForm.crewSize = 1 |
| | | this.dataForm.crewSize = null |
| | | this.fileList = [] |
| | | this.operationTemplateList = [] |
| | | this.stepList = [] |
| | |
| | | this.$refs.dataForm.validate((valid) => { |
| | | if (valid) { |
| | | // æ ¡éªãæºå¨è¿è½¬å ç´ ãããæºå¨è®¾ç½®æ¶é´ãããå³åè¿è½¬å ç´ ãããå³å设置æ¶é´ãä¸è³å°æä¸ä¸ªå段çå¼é¡»å¤§äº0 |
| | | if ( |
| | | this.dataForm.machRunFactor == 0 && |
| | | this.dataForm.machSetupTime == 0 && |
| | | this.dataForm.laborRunFactor == 0 && |
| | | this.dataForm.laborSetupTime == 0 |
| | | ) { |
| | | this.$message.error( |
| | | 'ãæºå¨è¿è½¬å ç´ ãããæºå¨è®¾ç½®æ¶é´ãããå³åè¿è½¬å ç´ ãããå³å设置æ¶é´ãä¸è³å°æä¸ä¸ªå段çå¼é¡»å¤§äº0' |
| | | ) |
| | | this.isSubmit = false |
| | | } else { |
| | | // if ( |
| | | // this.dataForm.machRunFactor == 0 && |
| | | // this.dataForm.machSetupTime == 0 && |
| | | // this.dataForm.laborRunFactor == 0 && |
| | | // this.dataForm.laborSetupTime == 0 |
| | | // ) { |
| | | // this.$message.error( |
| | | // 'ãæºå¨è¿è½¬å ç´ ãããæºå¨è®¾ç½®æ¶é´ãããå³åè¿è½¬å ç´ ãããå³å设置æ¶é´ãä¸è³å°æä¸ä¸ªå段çå¼é¡»å¤§äº0' |
| | | // ) |
| | | // this.isSubmit = false |
| | | // } else { |
| | | // ã人工类å«ã为空æ¶ãçç»äººåãå¿
须为空ï¼å¦åå¿
须大äº0 |
| | | let remindInfo = '' |
| | | let remindFlag = false |
| | |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | // } |
| | | } else { |
| | | this.isSubmit = false |
| | | } |
| | |
| | | searchInfoType: 'text' |
| | | }, |
| | | // å·¥èºç±»å |
| | | { |
| | | minWidth: '120', |
| | | prop: 'bomTypeDb', |
| | | label: 'å·¥èºç±»å', |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'select', |
| | | formatter: this.formatBomTypeDbType, |
| | | optList: () => { |
| | | return this.bomTypeDbOptions |
| | | } |
| | | }, |
| | | // { |
| | | // minWidth: '120', |
| | | // prop: 'bomTypeDb', |
| | | // label: 'å·¥èºç±»å', |
| | | // sort: true, |
| | | // isTrue: true, |
| | | // isSearch: true, |
| | | // searchInfoType: 'select', |
| | | // formatter: this.formatBomTypeDbType, |
| | | // optList: () => { |
| | | // return this.bomTypeDbOptions |
| | | // } |
| | | // }, |
| | | // 鿥éç¨æ¥æ |
| | | { |
| | | minWidth: '200', |
| | |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="BOM" prop="bomId"> |
| | | <el-select v-model="dataForm.bomId" placeholder="" filterable> |
| | | <el-select :disabled="dataForm.id != null" v-model="dataForm.bomId" placeholder="" filterable> |
| | | <el-option |
| | | v-for="item in bomList" |
| | | :key="item.id" |
| | |
| | | /> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item prop="version" label="å·¥èºçæ¬"> |
| | | <!-- <el-form-item prop="version" label="å·¥èºçæ¬"> |
| | | <el-input |
| | | v-model="dataForm.version" |
| | | placeholder="å·¥èºçæ¬" |
| | | ></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="å·¥èºç±»å" prop="bomTypeDb"> |
| | | </el-form-item> --> |
| | | <!-- <el-form-item label="å·¥èºç±»å" prop="bomTypeDb"> |
| | | <el-select |
| | | v-model="dataForm.bomTypeDb" |
| | | placeholder="è¯·éæ©å·¥èºç±»å" |
| | |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form-item> --> |
| | | <el-form-item label="鿥éç¨æ¥æ" prop="phaseInDate"> |
| | | <el-date-picker |
| | | v-model="dataForm.phaseInDate" |
| | |
| | | searchInfoType: 'text' |
| | | }, |
| | | // ç»æç±»å |
| | | { |
| | | minWidth: '120', |
| | | prop: 'bomTypeDb', |
| | | label: 'ç»æç±»å', |
| | | sort: true, |
| | | isTrue: true, |
| | | isSearch: true, |
| | | searchInfoType: 'select', |
| | | formatter: this.formatBomTypeDbType, |
| | | optList: () => { |
| | | return this.bomTypeDbOptions |
| | | } |
| | | }, |
| | | // { |
| | | // minWidth: '120', |
| | | // prop: 'bomTypeDb', |
| | | // label: 'ç»æç±»å', |
| | | // sort: true, |
| | | // isTrue: true, |
| | | // isSearch: true, |
| | | // searchInfoType: 'select', |
| | | // formatter: this.formatBomTypeDbType, |
| | | // optList: () => { |
| | | // return this.bomTypeDbOptions |
| | | // } |
| | | // }, |
| | | // æ¿ä»£ |
| | | // { |
| | | // minWidth: '120', |
| | |
| | | v-model="dataForm.partNo" |
| | | placeholder="è¯·éæ©é¶ä»¶" |
| | | @blur="checkPartNo()" |
| | | readonly |
| | | > |
| | | <el-button |
| | | :disabled="isUpdated" |
| | | slot="append" |
| | | icon="el-icon-search" |
| | | @click="openPartDialog()" |
| | |
| | | <el-input |
| | | v-model="dataForm.partName" |
| | | placeholder="é¶ä»¶åç§°" |
| | | style="width: 150px" |
| | | :readonly="true" |
| | | > |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="ç»æç±»å" prop="bomTypeDb"> |
| | | <!-- <el-form-item label="ç»æç±»å" prop="bomTypeDb"> |
| | | <el-select |
| | | v-model="dataForm.bomTypeDb" |
| | | placeholder="è¯·éæ©ç»æç±»å" |
| | |
| | | > |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | </el-form-item> --> |
| | | <!-- <el-form-item label="æ¿ä»£" prop="alternativeNo"> |
| | | <el-input v-model="dataForm.alternativeNo"></el-input> |
| | | </el-form-item> |
| | |
| | | v-model="dataForm.alternativeDesc" |
| | | ></el-input> |
| | | </el-form-item> --> |
| | | <el-form-item label="çæ¬å·" prop="version"> |
| | | <!-- <el-form-item label="çæ¬å·" prop="version"> |
| | | <el-input v-model="dataForm.version" disabled></el-input> |
| | | </el-form-item> |
| | | </el-form-item> --> |
| | | <el-form-item label="夿³¨" prop="remark"> |
| | | <el-input |
| | | type="textarea" |
| | |
| | | v-if="scope.row.isUpdate" |
| | | @blur="verifyPartNo(scope.row, scope.$index)" |
| | | @focus="clearClass(scope.$index)" |
| | | readonly |
| | | > |
| | | <el-button |
| | | slot="append" |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | isUpdated: false, |
| | | customClass: [], |
| | | showPart: false, |
| | | editNodePart: null, |
| | |
| | | }, |
| | | created() { |
| | | const formId = this.$route.params.id |
| | | if(formId != null){ |
| | | this.isUpdated = true |
| | | } |
| | | this.init(formId) |
| | | this.getBomTypeDbOptions() |
| | | }, |
| | |
| | | * https://cli.vuejs.org/zh/config/ |
| | | */ |
| | | const url = 'http://192.168.0.23:9999' |
| | | // const url = 'http://ztt-gateway:9999' |
| | | const localUrl = 'http://localhost:8089' |
| | | //const localUrl = 'http://10.88.15.95:8089' |
| | | const CompressionWebpackPlugin = require('compression-webpack-plugin') |