package.json
@@ -46,7 +46,8 @@ "vue-quill-editor": "3.0.6", "vue-router": "^3.0.2", "vuedraggable": "^2.24.3", "vuex": "^3.0.1" "vuex": "^3.0.1", "xlsx-style": "^0.8.13" }, "devDependencies": { "@vue/cli-plugin-babel": "~3.8.0", src/api/quality/finishedProduct.js
@@ -60,4 +60,13 @@ method: 'post', params: obj }) } export function exportExaminationProducts(query) { return request({ url: '/mes/qualityFinishedInspect/exportExcel', method: 'get', responseType : 'blob', params: query }) } src/api/quality/processInspect.js
@@ -77,4 +77,20 @@ method: 'post', params: obj }) } } export function selectDevice() { return request({ url: '/mes/qualityProcessInsProduct/selectDevice', method: 'get', }) } export function exportProcessInsProduct(query) { return request({ url: '/mes/qualityProcessInspect/exportExcel', method: 'get', responseType : 'blob', params: query }) } src/api/quality/rawMaterial.js
@@ -77,5 +77,12 @@ }) } export function exportRawMaterial(data) { return request({ url: '/mes/rawInspect/export', method: 'get', responseType: 'blob', params: data }) } src/api/quality/unqualifiedprocess.js
@@ -8,6 +8,15 @@ }) } export function exportData(query) { return request({ url: '/mes/qualityInspectUnaccepted/export', method: 'get', responseType: 'blob', params: query }) } export function pullInsUnapi(query) { return request({ url: '/mes/qualityInspectUnaccepted/pullInsUn', @@ -199,3 +208,12 @@ method: 'get' }) } export function UnqualifiedDisposal(query) { return request({ url: '/mes/qualityInspectUnaccepted/export', method: 'get', responseType : 'blob', params: query }) } src/views/common/rawMaterial-part.vue
@@ -210,9 +210,7 @@ this.$parent.costPlannedAmountChange(this.currentRow) }, handleCurrentChange(row) { console.log(row); this.currentRow = row console.log(this.currentRow); }, handleSelectionChange(val) { // å¤è¡éä¸ src/views/common/ztt-table.vue
@@ -819,6 +819,7 @@ this.isCleanInfo = true } } this.$emit("queryParam",this.queryParam) }, deep: true }, @@ -936,7 +937,7 @@ } }, getDataList(selectedId) { this.dataListLoading = true // this.dataListLoading = true var criteria = {} criteria.dateTimeFilters = this.dateTimeFilters criteria.multiSearchFilter = this.multiSearchFilter src/views/equipment/equipment/index.vue
@@ -198,12 +198,12 @@ type: 'primary', fun: this.addOrUpdateHandle }, { text: '忥', type: 'primary', loading: false, fun: this.pullEquipFun } // { // text: '忥', // type: 'primary', // loading: false, // fun: this.pullEquipFun // } ], operator: [ { src/views/quality/finishedProductInspection/finishedProduct-form.vue
@@ -96,25 +96,41 @@ <el-table-column prop="required" label="æ åå¼" width="240" ></el-table-column> <el-table-column prop="inspectionValue" v-for="(item, index) in empiricalValueAdd" :key="index" label="æ£æµå¼" width="240" style="text-align: center;"> <template slot-scope="scope"> <el-tooltip v-if="scope.row.iname!=null" :disabled="scope.row.eId != null" class="item" effect="dark" content="请å éæ©è®¾å¤ï¼" placement="top-start"> <el-input :disabled="scope.row.eId == null" v-model="scope.row.empiricalValueAddss[index]" @blur="changeState(scope.row, index)" placeholder="请è¾å ¥æ£æµå¼"></el-input> <span v-if="resultVal != null" v-text="scope.row.empiricalValueAddss[index]"></span> <el-col v-if="scope.row.itype === '1'"> <el-tooltip v-if="scope.row.iname!=null" :disabled="scope.row.eId != null" class="item" effect="dark" content="请å éæ©è®¾å¤ï¼" placement="top-start"> <el-input :disabled="scope.row.eId == null" v-model="scope.row.empiricalValueAddss[index]" @blur="changeState(scope.row, index)" placeholder="请è¾å ¥æ£æµå¼"></el-input> <span v-if="resultVal != null" v-text="scope.row.empiricalValueAddss[index]"></span> </el-tooltip> </el-col> <el-col v-else> <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null" class="item" effect="dark" content="请å éæ©è®¾å¤ï¼" placement="top-start"> <el-select style="width: 100%;" @change="changeState(scope.row, index)" :disabled="scope.row.eId == null" v-model="scope.row.empiricalValueAddss[index]" placeholder="è¯·éæ©"> <el-option v-for="item in dataVal" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> <span v-if="resultVal != null && processInspectVo.id != null" v-text="scope.row.empiricalValueAddss[index]"></span> </el-tooltip> </el-col> </template> </el-table-column> <el-table-column prop="deviceName" label="è¯éªè®¾å¤" min-width="250"> <template slot-scope="scope"> <span v-if="resultVal!=null && processInspectVo.id!=null" v-text="scope.row.ename"></span> <div v-else> <el-select style="width:100%" v-model="scope.row.eId" <el-input v-model="scope.row.eId" v-if="scope.row.iname != null" placeholder="请è¾å ¥è®¾å¤å·"></el-input> <!-- <el-select style="width:100%" v-model="scope.row.eId" v-if="scope.row.iname != null" filterable @change="updateDevice(scope.row,scope.$index)"> <el-option v-for="(item,index) in deviceList" :key="index" :value="item.id" :label="item.number +'-'+ item.name"></el-option> </el-select> </el-select> --> </div> </template> </el-table-column> @@ -175,6 +191,13 @@ export default { data() { return { dataVal: [{ label: 'æ¯', value: 'æ¯' }, { label: 'å¦', value: 'å¦' }], resultVal: null, deviceList: [], hasChildren: true, @@ -220,6 +243,7 @@ this.init() }, methods: { submitSave(){ let pro = 0 this.inspectionItems.forEach(item => { @@ -323,7 +347,8 @@ }, getDeviceList(){ selectDevice(null).then(res=>{ this.deviceList = res.data.data // this.deviceList = res.data.data console.log(res); }) }, updateDevice(row,index){ src/views/quality/finishedProductInspection/index.vue
@@ -20,7 +20,8 @@ import ttable from '@/views/common/ztt-table.vue' import * as fecha from 'element-ui/lib/utils/date' import finishedProductInspectionAdd from './finishedProduct-form' import { page,deletePro } from '@/api/quality/finishedProduct' import { page,deletePro,exportExaminationProducts } from '@/api/quality/finishedProduct' import { transform } from '@/util/fileTransform' export default { components: { finishedProductInspectionAdd, @@ -151,6 +152,8 @@ }, { text: '导åº', type: 'primary', fun: this.exportExcel } ], operator: [{ @@ -174,6 +177,15 @@ }, created() { }, methods: { exportExcel(){ console.log("============"); let queryParam=this.$refs.finishedProduct.getQueryParam(); delete queryParam.criteria console.log(queryParam); exportExaminationProducts(queryParam).then((res)=>{ transform(res) }) }, deleteHandle(row){ console.log(row.id) this.$confirm('确认å é¤è¯¥æ°æ®åï¼', 'æç¤º', { src/views/quality/processInspect/index.vue
@@ -20,7 +20,8 @@ import ttable from '@/views/common/ztt-table.vue' import * as fecha from 'element-ui/lib/utils/date' import processInspectForm from './processInspect-form' import { page,deleteById } from '@/api/quality/processInspect' import { transform } from '@/util/fileTransform' import { page,deleteById,exportProcessInsProduct } from '@/api/quality/processInspect' export default { components: { processInspectForm, @@ -153,6 +154,7 @@ }, { text: '导åº', fun: this.exportExcel } ], operator: [{ @@ -172,6 +174,14 @@ }, created() { }, methods: { exportExcel(){ let queryParam=this.$refs.processInspect.getQueryParam(); delete queryParam.criteria console.log(queryParam); exportProcessInsProduct(queryParam).then((res)=>{ transform(res) }) }, deleteHandle(row){ this.$confirm('确认å é¤è¯¥æ°æ®åï¼', 'æç¤º', { confirmButtonText: 'ç¡®å®', src/views/quality/processInspect/processInspect-form.vue
@@ -4,45 +4,46 @@ <div class="page-header"> <div class="header-left"> <a @click="$router.go(-1)"><i class="icon-btn-back"></i></a> <h2 v-if="resultVal != null && processInspectVo.id!=null">æ¥ç-è¿ç¨æ£éªå</h2> <h2 v-if="resultVal != null && processInspectVo.id != null">æ¥ç-è¿ç¨æ£éªå</h2> <h2 v-else>ç¼è¾-è¿ç¨æ£éªå</h2> </div> <div class="btn-group header-right"> <el-button @click="addTestProject" v-if="processInspectVo.id==null">çææ£éªé¡¹ç®</el-button> <el-button @click="addTestProject" v-if="processInspectVo.id == null">çææ£éªé¡¹ç®</el-button> </div> </div> <div class="page-main"> <div class="finishedProduct-basic"> <el-form :model="processInspectVo" ref="addInspectionform" class="l-mes" label-position="right" label-width="120px" style="width: 100%" size="small"> <el-form :model="processInspectVo" ref="addInspectionform" class="l-mes" label-position="right" label-width="120px" style="width: 100%" size="small"> <div class="formwrapper"> <el-row> <el-col :span="6"> <el-form-item label="订åå·ï¼"> <el-input @blur="selectInfoByOrderId" :disabled="processInspectVo.id != null" v-model="processInspectVo.orderNumber" placeholder="请è¾å ¥è®¢åå·" autocomplete="off" /> v-model="processInspectVo.orderNumber" placeholder="请è¾å ¥è®¢åå·" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="产ååç§°ï¼"> <el-select style="width: 100%" @change="changeOptionsSamplename" :disabled="processInspectVo.id != null" v-model="processInspectVo.material" size="small" placeholder="è¯·éæ©äº§ååç§°"> <el-option v-for="(item,index) in optionsSamplename" :key="index" :label="item.material" :value="item.materialCode"> <el-select style="width: 100%" @change="changeOptionsSamplename" :disabled="processInspectVo.id != null" v-model="processInspectVo.material" size="small" placeholder="è¯·éæ©äº§ååç§°"> <el-option v-for="(item, index) in optionsSamplename" :key="index" :label="item.material" :value="item.materialCode"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="产åç¼ç ï¼"> <el-input disabled v-model="processInspectVo.materialCode" placeholder="请è¾å ¥äº§åç¼ç " autocomplete="off" /> <el-input disabled v-model="processInspectVo.materialCode" placeholder="请è¾å ¥äº§åç¼ç " autocomplete="off" /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="è§æ ¼åå·ï¼"> <el-input disabled v-model="processInspectVo.specs" placeholder="请è¾å ¥è§æ ¼åå·" autocomplete="off" /> <el-input disabled v-model="processInspectVo.specs" placeholder="请è¾å ¥è§æ ¼åå·" autocomplete="off" /> </el-form-item> </el-col> </el-row> @@ -51,7 +52,7 @@ <el-form-item label="å·¥åºåç§°"> <el-select style="width: 100%" :disabled="processInspectVo.id != null" v-model="processInspectVo.technologyOperationId" size="small" placeholder="è¯·éæ©å·¥åº"> <el-option v-for="(item,index) in technologyList" :key="index" :label="item.name" <el-option v-for="(item, index) in technologyList" :key="index" :label="item.name" :value="item.technologyOperationId"> </el-option> </el-select> @@ -59,16 +60,16 @@ </el-col> <el-col :span="6"> <el-form-item label="åä½ï¼"> <el-input disabled v-model="processInspectVo.unit" placeholder="请è¾å ¥åä½" autocomplete="off" /> <el-input disabled v-model="processInspectVo.unit" placeholder="请è¾å ¥åä½" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="6"> <el-form-item label="æ°éï¼"> <el-input v-model="processInspectVo.quantity" placeholder="请è¾å ¥æ°é" autocomplete="off" :disabled="processInspectVo.id != null" /> <el-input v-model="processInspectVo.quantity" placeholder="请è¾å ¥æ°é" autocomplete="off" :disabled="processInspectVo.id != null" /> </el-form-item> </el-col> </el-row> @@ -86,34 +87,60 @@ <el-row style="width:100%;"> <el-col :span="24"> <el-table border :data="inspectionItems" height="400" :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}" :cell-style="{textAlign:'center'}" row-key="iid" default-expand-all style="width: 100%" ref="table" :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> :header-cell-style="{ textAlign: 'center', color: 'black', backgroundColor: '#fafafa' }" :cell-style="{ textAlign: 'center' }" row-key="iid" default-expand-all style="width: 100%" ref="table" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"> <el-table-column type="index" label="åºå·" width="60"></el-table-column> <el-table-column label="项ç®" prop="father" width="240" ></el-table-column> <el-table-column prop="iname" label="ææ " width="240" ></el-table-column> <el-table-column prop="iunit" label="åä½" width="240" ></el-table-column> <el-table-column prop="required" label="æ åå¼" width="240" ></el-table-column> <el-table-column prop="inspectionValue" v-for="(item, index) in empiricalValueAdd" :key="index" label="æ£æµå¼" width="240" style="text-align: center;"> <el-table-column label="项ç®" prop="father" width="240"></el-table-column> <el-table-column prop="iname" label="ææ " width="240"></el-table-column> <el-table-column prop="iunit" label="åä½" width="240"></el-table-column> <el-table-column prop="required" label="æ åå¼" width="240"></el-table-column> <el-table-column prop="inspectionValue" v-for="(item, index) in empiricalValueAdd" :key="index" label="æ£æµå¼" width="240" style="text-align: center;"> <template slot-scope="scope"> <el-tooltip v-if="scope.row.iname!=null" :disabled="scope.row.eId != null" class="item" effect="dark" content="请å éæ©è®¾å¤ï¼" placement="top-start"> <el-input :disabled="scope.row.eId == null" v-model="scope.row.empiricalValueAddss[index]" <el-col v-if="scope.row.itype === '1'"> <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null" class="item" effect="dark" content="请å éæ©è®¾å¤ï¼" placement="top-start"> <el-input :disabled="scope.row.eId == null" v-model="scope.row.empiricalValueAddss[index]" @blur="changeState(scope.row, index)" placeholder="请è¾å ¥æ£æµå¼"></el-input> <span v-if="resultVal != null && processInspectVo.id!=null" v-text="scope.row.empiricalValueAddss[index]"></span> <span v-if="resultVal != null && processInspectVo.id != null" v-text="scope.row.empiricalValueAddss[index]"></span> </el-tooltip> </el-col> <el-col v-else> <el-tooltip v-if="scope.row.iname != null" :disabled="scope.row.eId != null" class="item" effect="dark" content="请å éæ©è®¾å¤ï¼" placement="top-start"> <!-- <el-input :disabled="scope.row.eId == null" v-model="scope.row.empiricalValueAddss[index]" @blur="changeState(scope.row, index)" placeholder="请è¾å ¥æ£æµå¼"></el-input> --> <el-select style="width: 100%;" @change="changeState(scope.row, index)" :disabled="scope.row.eId == null" v-model="scope.row.empiricalValueAddss[index]" placeholder="è¯·éæ©"> <el-option v-for="item in dataVal" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> <span v-if="resultVal != null && processInspectVo.id != null" v-text="scope.row.empiricalValueAddss[index]"></span> </el-tooltip> </el-col> </template> </el-table-column> <el-table-column prop="deviceName" label="è¯éªè®¾å¤" min-width="250"> <template slot-scope="scope"> <span v-if="resultVal != null && scope.row.iname != null" v-text="scope.row.ename"></span> <span v-if="resultVal != null && scope.row.iname != null" v-text="scope.row.ename"></span> <div v-else> <<<<<<< HEAD <el-select style="width:100%" v-model="scope.row.eId" v-if="scope.row.iname != null" filterable @change="updateDevice(scope.row,scope.$index)"> <el-option v-for="(item,index) in deviceList" :key="index" :value="item.id" :label="item.code +'-'+ item.name"></el-option> ======= <el-select style="width:100%" v-model="scope.row.eId" v-if="scope.row.iname != null" filterable @change="updateDevice(scope.row, scope.$index)"> <el-option v-for="(item, index) in deviceList" :key="index" :value="item.id" :label="item.code + '-' + item.name"></el-option> >>>>>>> c36b81234cff45a92a096a94e844041cc1a31f2a </el-select> </div> </template> @@ -135,7 +162,7 @@ <el-table-column label="ç»è®º" fixed="right" min-width="100"> <template slot-scope="scope"> <div v-if="scope.row.iname!=null"> <div v-if="scope.row.iname != null"> <span style="color: #34BD66;" v-if="scope.row.iresult == 1">åæ ¼</span> <span style="color: #E84738;" v-else-if="scope.row.iresult == 0">ä¸åæ ¼</span> <span v-else>ææ ç»è®º</span> @@ -153,8 +180,8 @@ <el-row style="width:100%;"> <el-col :span="24"> <el-table border height="90" :data="inspectionResultForm" :header-cell-style="{textAlign:'center',color:'black',backgroundColor:'#fafafa'}" :cell-style="{textAlign:'center'}"> :header-cell-style="{ textAlign: 'center', color: 'black', backgroundColor: '#fafafa' }" :cell-style="{ textAlign: 'center' }"> <el-table-column prop="materialCode" label="ç©æç¼å·"></el-table-column> <el-table-column prop="material" label="ç©æåç§°"></el-table-column> <el-table-column prop="userName" label="æ£éªå"></el-table-column> @@ -164,9 +191,10 @@ <el-tag type="danger" v-if="scope.row.result == '0'">ä¸åæ ¼</el-tag> </template> </el-table-column> <el-table-column label="æä½"> <el-table-column label="æä½"> <template> <el-button type="text" :disabled="resultVal != null && processInspectVo.id!=null" @click="submitSave()" size="small">䏿¥</el-button> <el-button type="text" :disabled="resultVal != null && processInspectVo.id != null" @click="submitSave()" size="small">䏿¥</el-button> </template> </el-table-column> </el-table> @@ -175,49 +203,57 @@ </div> </div> </div> </template> </template> <script> import { chooseMater, addProcess, queryById, updateDeviceBypppId, updateProcessInsProduct, updateProcessInspectsById, } from '@/api/quality/processInspect' import { selectDevice } from '@/api/quality/rawMaterial' export default { data() { return { resultVal: null, technologyList: [], deviceList: [], hasChildren: true, optionsSamplename: [], // æ·»å å empiricalValueAdd: 1, // ç¼è¾æ¶å卿é¿çåæ°åï¼åå é¤å¤æ empiricalValueAddMaxNumber: 0, processInspectVo: { id: null, material: null, materialCode: null, orderNumber: "ZTTIC20230001", quantity: null, specs: null, unit: null, technologyOperationId: null }, inspectionItems: [], // æ°å¢æ£éªé¡¹ç®è¡¨æ ¼ inspectionResultForm: [], } }, watch: { }, beforeUpdate(){ this.$nextTick(()=>{ <script> import { chooseMater, addProcess, queryById, updateDeviceBypppId, updateProcessInsProduct, updateProcessInspectsById, } from '@/api/quality/processInspect' import { selectDevice } from '@/api/quality/processInspect' export default { data() { return { dataVal: [{ label: 'æ¯', value: 'æ¯' }, { label: 'å¦', value: 'å¦' }], resultVal: null, technologyList: [], deviceList: [], hasChildren: true, optionsSamplename: [], // æ·»å å empiricalValueAdd: 1, // ç¼è¾æ¶å卿é¿çåæ°åï¼åå é¤å¤æ empiricalValueAddMaxNumber: 0, processInspectVo: { id: null, material: null, materialCode: null, orderNumber: "ZTTIC20230001", quantity: null, specs: null, unit: null, technologyOperationId: null }, inspectionItems: [], // æ°å¢æ£éªé¡¹ç®è¡¨æ ¼ inspectionResultForm: [], } }, watch: { }, beforeUpdate() { this.$nextTick(() => { this.$refs.table.doLayout(); <<<<<<< HEAD }) }, created() { @@ -243,59 +279,148 @@ return obj.iresult == 0; }) pro+=arr.length ======= }) }, created() { }, mounted() { this.getDeviceList() this.processInspectVo.id = this.$route.query.id this.resultVal = this.$route.query.resultVal if (this.resultVal == null) { let val = sessionStorage.getItem("process-resultVal-" + this.processInspectVo.id); val == undefined ? this.resultVal = null : this.resultVal = val } this.init() }, methods: { submitSave() { let pro = 0 console.log(this.inspectionItems); this.inspectionItems.forEach(item => { if (item.children) { let arr = item.children.filter(obj => { return obj.iresult == 0; }) pro += arr.length } }) if (pro > 0) { this.$prompt('请è¾å ¥ä¸åæ ¼æ°é', 'ä¸åæ ¼æ°é', { confirmButtonText: 'ç¡®å®', cancelButtonText: 'åæ¶', inputPattern: /^\d+$/, inputErrorMessage: '请è¾å ¥æ£ç¡®æ°åæ ¼å¼' }).then(({ value }) => { let data = { id: this.processInspectVo.id, number: value >>>>>>> c36b81234cff45a92a096a94e844041cc1a31f2a } }) if (pro > 0) { this.$prompt('请è¾å ¥ä¸åæ ¼æ°é', 'ä¸åæ ¼æ°é', { confirmButtonText: 'ç¡®å®', cancelButtonText: 'åæ¶', inputPattern: /^\d+$/, inputErrorMessage: '请è¾å ¥æ£ç¡®æ°åæ ¼å¼' }).then(({ value }) => { let data = { id: this.processInspectVo.id, number: value } updateProcessInspectsById(data).then(res => { let data = res.data.data if(data){ if(data.indexOf("æå")>0){ this.$message.success(data); this.checkTestState() }else{ this.$message.warning(data); } return } }); }).catch(() => {}); }else{ updateProcessInspectsById({id:this.processInspectVo.id,number:0}).then(res => { updateProcessInspectsById(data).then(res => { let data = res.data.data if(data){ if(data.indexOf("æå") > 0){ if (data) { if (data.indexOf("æå") > 0) { this.$message.success(data); this.checkTestState() }else{ } else { this.$message.warning(data); } return } }); }).catch(() => { }); } else { updateProcessInspectsById({ id: this.processInspectVo.id, number: 0 }).then(res => { let data = res.data.data if (data) { if (data.indexOf("æå") > 0) { this.$message.success(data); this.checkTestState() } else { this.$message.warning(data); } return } }); } this.init() }, checkTestState() { let resultVal = '1' this.inspectionItems.forEach(item => { if (item.children) { item.children.forEach(obj => { if (obj.iresult == 0) { resultVal = '0' } }) } this.init() }, checkTestState(){ let resultVal = '1' this.inspectionItems.forEach(item=>{ if(item.children){ item.children.forEach(obj=>{ if(obj.iresult == 0){ resultVal = '0' } }) }) this.resultVal = resultVal this.inspectionResultForm[0].result = resultVal sessionStorage.setItem("process-resultVal-" + this.processInspectVo.id, resultVal) }, init() { let id = this.processInspectVo.id if (id != null) { queryById(id).then(res => { let result = res.data.data this.processInspectVo.orderNumber = result.orderNumber this.processInspectVo.materialCode = result.materialCode this.processInspectVo.material = result.material this.processInspectVo.technologyOperationId = result.technologyOperationName this.processInspectVo.specs = result.specs this.processInspectVo.unit = result.punit this.processInspectVo.quantity = result.quantity let userList = [] result.children.forEach(item => { item.iid = Math.random() if (item.children != undefined) { item.children.forEach(obj => { let arr = [] if (obj.userName) { userList.push(obj.userName) } if (obj.inspectionValue) { arr = obj.inspectionValue.split(",") } obj.empiricalValueAddss = arr if (arr.length > this.empiricalValueAdd) { this.empiricalValueAdd = arr.length } }) } }) this.inspectionItems = result.children this.inspectionResultForm = [{ materialCode: result.materialCode, material: result.material, userName: Array.from(new Set(userList)).join(","), result: this.resultVal == null ? '' : this.resultVal, }] }).catch(error => { console.log(error) }) } }, getDeviceList() { selectDevice(null).then(res => { this.deviceList = res.data.data }) }, updateDevice(row, index) { updateDeviceBypppId({ deviceId: row.eId, ppid: row.iid }).then(res => { this.inspectionItems.forEach(obj => { console.log(obj); if (obj.children) { obj.children[index - 1].inspectionValue = null obj.children[index - 1].iresult = null obj.children[index - 1].empiricalValueAddss = [] } }) <<<<<<< HEAD this.resultVal = resultVal this.inspectionResultForm[0].result = resultVal sessionStorage.setItem("process-resultVal-"+this.processInspectVo.id,resultVal) @@ -466,90 +591,172 @@ // å 餿£éªå¼å clickDeleteInspectionColumn() { if (this.empiricalValueAdd - 1 === 0) { } else { if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) { this.empiricalValueAdd = this.empiricalValueAdd - 1; this.inspectionItems.forEach(i => { i.empiricalValueAddss.splice(this.empiricalValueAdd, 1); }); } ======= }).catch(error => { console.log(error) }) }, //产ååç§°ï¼éæ© changeOptionsSamplename(val) { let sample = this.optionsSamplename.filter(o => { return o.materialCode == val })[0] this.processInspectVo.materialCode = sample.materialCode this.processInspectVo.specs = sample.specs this.processInspectVo.unit = sample.unit this.processInspectVo.material = sample.material this.technologyList = sample.children }, changeState(row, index) { if (row.iid != null && row.iid != '') { let str = "" row.empiricalValueAddss.forEach(e => { str += e + "," }) str = str.slice(0, -1); if (str === undefined || str === '' || str === null) { return } }, // æ·»å æ£éªå¼å clickAddInspectionColumn() { this.empiricalValueAdd = this.empiricalValueAdd + 1; let obj = { devideId: row.eId, ppid: row.iid, inspectionValue: str } updateProcessInsProduct(obj).then(res => { if (res.data.code == 0) { this.$message.success("æ´æ°æå") } else { this.$message.error("æ´æ°å¤±è´¥") } this.init() }) } }, } </script> addTestProject() { let val = this.processInspectVo addProcess(val).then(res => { let id = res.data.data if (id != null) { queryById(id).then(response => { console.log(response.data.data.children) let proList = response.data.data.children proList.forEach(item => { item.iid = Math.random(); if (item.children != undefined) { item.children.forEach(obj => { obj.empiricalValueAddss = [] }) } }) this.inspectionItems = proList }).catch(error => { console.log(error); }) } }).catch(error => { console.log(error) }) }, selectInfoByOrderId() { chooseMater({ orderNumber: this.processInspectVo.orderNumber }).then(res => { if (res.data.data != null) { this.optionsSamplename = res.data.data.children >>>>>>> c36b81234cff45a92a096a94e844041cc1a31f2a } else { this.$message({ message: '没æè¯¥è®¢åå·ï¼', type: 'warning' }); this.optionsSamplename = [] this.processInspectVo.materialCode = null this.processInspectVo.material = null this.processInspectVo.specs = null this.processInspectVo.unit = null } }) }, // å 餿£éªå¼å clickDeleteInspectionColumn() { if (this.empiricalValueAdd - 1 === 0) { } else { if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) { this.empiricalValueAdd = this.empiricalValueAdd - 1; this.inspectionItems.forEach(i => { i.empiricalValueAddss.splice(this.empiricalValueAdd, 1); }); } } }, // æ·»å æ£éªå¼å clickAddInspectionColumn() { this.empiricalValueAdd = this.empiricalValueAdd + 1; } }, } </script> <style scoped> .finishedProduct-detail { width: 100%; height: 470px; padding: 10px 20px; display: flex; border: 1px solid #ddd; background-color: #fff; margin-top: 10px; box-sizing: border-box; flex-wrap: wrap; } .finishedProduct-result { width: 100%; height: 150px; padding: 10px 20px; display: flex; border: 1px solid #ddd; background-color: #fff; margin-top: 10px; box-sizing: border-box; flex-wrap: wrap; } .finishedProduct-basic { background-color: #fff; height: 155px; display: flex; flex-wrap: wrap; padding: 10px 20px; border: 1px solid #ddd; 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; } </style> <style scoped> .finishedProduct-detail { width: 100%; height: 470px; padding: 10px 20px; display: flex; border: 1px solid #ddd; background-color: #fff; margin-top: 10px; box-sizing: border-box; flex-wrap: wrap; } .finishedProduct-result { width: 100%; height: 150px; padding: 10px 20px; display: flex; border: 1px solid #ddd; background-color: #fff; margin-top: 10px; box-sizing: border-box; flex-wrap: wrap; } .finishedProduct-basic { background-color: #fff; height: 155px; display: flex; flex-wrap: wrap; padding: 10px 20px; border: 1px solid #ddd; 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; } </style> src/views/quality/processconfiguration/index.vue
@@ -3,14 +3,13 @@ <basic-container> <ttable :table="table" :resultData="resultData" @change ="costPlannedAmountChange" @handleSelectionChange="handleSelectionChange" :uploadInfo="uploadInfo" :isShowHide="true" :prelang="prelang" :options="options" :ajaxFun="ajaxFun" @queryParam="getQueryParam($event)" ref="processconfiguration" > <template #toolbar></template> @@ -65,7 +64,7 @@ </div> </el-form> <span slot="footer" > <el-button @click="dialogVisible = false">å æ¶</el-button> <el-button @click="WayCancel()">å æ¶</el-button> <el-button type="primary" @click="WaySure()">ç¡® å®</el-button> </span> </el-dialog> @@ -74,16 +73,21 @@ </template> <script> import { UnqualifiedList,pullInsUnapi,AuditSuggestion import { UnqualifiedList, pullInsUnapi, AuditSuggestion, exportData } from '@/api/quality/unqualifiedprocess' import TableForm from './table-form' import { mapGetters } from 'vuex' // import { remote } from '@/api/admin/dict' import { transform } from '@/util/fileTransform' import ttable from '@/views/common/ztt-table.vue' export default { data() { return { resultData:[], queryParam: {}, checkList: "", // WayIdea:'', UserId:{}, @@ -259,43 +263,13 @@ // return this.processModeOptions // } // }, //å起人 // { // minWidth: '200', // prop: 'originator', // label: 'å起人', // sort: true, // isTrue: true, // isSearch: true, // searchInfoType: 'text' // }, // å®¡æ ¸äºº // { // minWidth: '140', // prop: 'examiner', // label: 'å®¡æ ¸äºº', // sort: true, // isTrue: true, // isSearch: true, // searchInfoType: 'text' // }, // å¤ç人 // { // minWidth: '120', // prop: 'handler', // label: 'å¤ç人', // sort: true, // isTrue: true, // isSearch: true, // searchInfoType: 'text' // }, ], toolbar: [ { text: '导åº', type: 'primary', fun: this.handleExcel fun: this.handleExport }, ], operator: [ @@ -342,34 +316,34 @@ // this.getType() }, methods: { async costPlannedAmountChange(value){ this.resultData= value }, handleExcel() { console.log(this.resultData); console.log(this.table.column); 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 getQueryParam(data){ this.queryParam = data }, handleExport(){ exportData(this.queryParam).then(res=>{ console.log(res) this.downloadFun(res) }).catch(error=>{ console.log(error); }) }, downloadFun(result){ if(result == null || result == undefined){ return; } this.$Export.excel({ title: opt.title, columns: opt.column, data: opt.data }); }, 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') // æ°å»ºä¸ä¸ªDOMèç¹ 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) }, //å®¡æ ¸ç»æ AuditResult(row){ this.UserId = row.id @@ -377,6 +351,11 @@ this.dialogVisible = true; }, WayCancel(){ this.dialogVisible = false this.checkList = null this.WayIdea = null }, WaySure(){ AuditSuggestion({id:this.UserId,way:this.checkList}).then( res =>{ src/views/quality/rawMaterial/ExportMaterial.vue
ÎļþÒÑɾ³ý src/views/quality/rawMaterial/index.vue
@@ -20,13 +20,15 @@ <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> <!-- å¼¹çª, æ°å¢ / ä¿®æ¹ --> @@ -38,15 +40,15 @@ </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 } 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 { queryParam: {}, resultData:[], addOrUpdateVisible: false, type: [1], @@ -64,14 +66,13 @@ 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: [ { @@ -139,6 +140,7 @@ prop: 'createTime', label: 'æ¥æ£æ¥æ', isTrue: true, sort: true, isSearch: true, searchInfoType: 'text', formatter: this.formatDateTime, @@ -190,13 +192,7 @@ text: 'æ°å¢', type: 'primary', fun: this.addOrUpdateHandle }, { text: '导åº', type: 'primary', fun: this.handleExcel } ], }], operator: [{ text: 'ä½åº', type: 'text', @@ -214,10 +210,17 @@ StateList: [{label:'å ¨é¨',value:''},{label:'å·²åæ ¼',value:'1'},{label:'ä¸åæ ¼',value:'0'}], } }, // props:{ // queryParam:{ // type: Object, // default: ()=>{ // return {} // } // } // }, components: { ttable, RawMaterialForm, ExportMaterial, }, created() { @@ -226,34 +229,34 @@ ...mapGetters(['permissions']) }, methods:{ async costPlannedAmountChange(value){ this.resultData= value getQueryParam(data){ this.queryParam = data }, handleExcel() { console.log(this.resultData); console.log(this.table.column); let arr = this.table.column.filter(item => item.isTrue == true).map(item => { return{ prop:item.prop, label:item.label } exportRawMaterial(){ exportRawMaterial(this.queryParam).then(res=>{ console.log(res) this.downloadFun(res) }).catch(error=>{ console.log(error); }) let opt = { title: 'ææ¡£æ é¢', column: [{ label:'', prop:'header', children:arr }], data: this.resultData } this.$Export.excel({ title: opt.title, columns: opt.column, data: opt.data }); }, }, 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') // æ°å»ºä¸ä¸ªDOMèç¹ 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 , 'æç¤º', { src/views/quality/rawMaterial/rawMaterial-form.vue
@@ -75,23 +75,24 @@ </el-form-item> </el-col> <el-col :span="6"> <el-form-item prop="projectName" label="项ç®åç§°"> <el-tooltip :disabled="dataForm.projectName==null" :content="dataForm.projectName"> <el-input v-model="dataForm.projectName" disabled ></el-input> </el-tooltip> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="6"> <el-form-item label="æ¥æ£æ¥æ" prop="createTime" v-if="dataForm.id!=null"> <el-input v-model="dataForm.createTime" disabled /> </el-form-item> </el-col> </el-row> <el-row> </el-col> <el-col :span="6"> <el-form-item label="æ¥æ£äºº" prop="createUser" v-if="dataForm.id!=null"> <el-input v-model="dataForm.createUser" disabled /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item prop="projectName" label="项ç®åç§°"> <el-input v-model="dataForm.projectName" disabled > </el-input> </el-form-item> </el-col> </el-row> </el-form> </div> @@ -113,14 +114,23 @@ :data="list" border style="width: 100%;" height="400"> <el-table-column type="index" label="åºå·" width="60"> </el-table-column> <el-table-column prop="father" label="æ£éªé¡¹ç®" width="260"> <template slot-scope="scope"> <el-input :disabled="dataForm.id != null" v-model="scope.row.father" placeholder="请è¾å ¥æ£éªé¡¹ç®"></el-input> </template> </el-table-column> <el-table-column prop="note" label="æ£éªæè¿°" width="260"> <template slot-scope="scope"> <el-input :disabled="dataForm.id != null" v-model="scope.row.note" placeholder="æ£éªæè¿°"></el-input> </template> </el-table-column> <el-table-column prop="name" label="项ç®" width="260"> <template slot-scope="scope"> <el-select v-if="projectList.length > 0" :disabled="dataForm.id != null" class="inline-input" v-model="scope.row.name" filterable allow-create placeholder="请è¾å ¥æéæ©é¡¹ç®åç§°" style="width:100%" @change="changeName(scope.$index,scope.row)"> <el-option v-for="(item,index) in projectList" :key="index" :label="item.name" :value="item.name"/> </el-select> <el-input v-else :disabled="dataForm.id != null" class="inline-input" v-model="list.name" <el-input v-else :disabled="dataForm.id != null" class="inline-input" v-model="scope.row.name" placeholder="请è¾å ¥é¡¹ç®åç§°"></el-input> </template> </el-table-column> @@ -140,18 +150,19 @@ <el-table-column prop="testValue" label="æ£æµå¼" min-width="260" v-for="(item, index) in empiricalValueAdd" :key="index"> <template slot-scope="scope"> <el-tooltip :disabled="scope.row.equipmentId != null" class="item" effect="dark" content="请å éæ©è®¾å¤ï¼" <el-tooltip :disabled="scope.row.deviceId != null" class="item" effect="dark" content="请å éæ©è®¾å¤ï¼" placement="top-start"> <!-- <el-input :disabled="scope.row.equipmentId == null || (dataForm.id!=null&&resultVal!=null)" v-model="scope.row.testValueList[index]" @blur="updateTestValue(scope.row,index)" placeholder="请è¾å ¥æ£æµå¼"></el-input> --> <el-autocomplete :disabled="scope.row.equipmentId == null || (dataForm.id!=null&&resultVal!=null)" style="width:100%" :disabled="scope.row.deviceId == null || (dataForm.id!=null&&resultVal!=null)" class="inline-input" v-model="scope.row.testValueList[index]" :fetch-suggestions="querySearch" placeholder="请è¾å ¥å 容" placeholder="请è¾å ¥æ£æµå¼" @select="handleSelect" ></el-autocomplete> @@ -162,9 +173,9 @@ <el-table-column prop="deviceName" label="è¯éªè®¾å¤" min-width="260"> <template slot-scope="scope"> <el-select :disabled="resultVal!=null && dataForm.id!=null" style="width:100%" v-model="scope.row.equipmentId" filterable @change="updateDevice(scope.row,scope.$index)"> v-model="scope.row.deviceId" filterable @change="updateDevice(scope.row,scope.$index)"> <el-option v-for="(item,index) in deviceList" :key="index" :value="item.id" :label="item.number +'-'+ item.name"></el-option> :key="index" :value="item.id" :label="item.code +'-'+ item.name"></el-option> </el-select> </template> </el-table-column> @@ -223,17 +234,12 @@ <span>ä¸åæ ¼æ°é:</span> <el-input type="number" v-model="unqualifiedNum" placeholder="请è¾å ¥ä¸åæ ¼æ°é"/> </el-col> <el-col> <span>宿£æ°é:</span> <el-input type="number" placeholder="请è¾å ¥å®æ£æ°é" v-model="fiedNum"/> </el-col> </el-row> <span slot="footer" class="dialog-footer"> <el-button @click="dialogVisible = false">å æ¶</el-button> <el-button type="primary" @click="submitSave()">ç¡® å®</el-button> </span> </el-dialog> <!-- <rawMaterialPartDialog :currentRow ="currentRow" @costPlannedAmountChange="costPlannedAmountChange"/> --> </div> </template> @@ -246,7 +252,6 @@ updateRawInspectsById, updateDeviceById, } from '@/api/quality/rawMaterial' import rawMaterialPartDialog from '@/views/common/rawMaterial-part' import { log } from 'util' export default { // props:['currentRow'], computed:{}, @@ -255,9 +260,8 @@ }, data(){ return{ currentRow:[], userlist:[], fiedNum: null, currentRow:[], userlist:[], unqualifiedNum: null, dialogVisible:false, resultVal: null, @@ -282,7 +286,7 @@ number: '', supplier: '', rawInsProducts: [{ equipmentId: 0, deviceId: 0, name: '', required: '', testValue: '', @@ -320,30 +324,18 @@ this.init() this.getDeviceList() this.restaurants = this.loadAll(); // this.costPlannedAmountChange() console.log(this.dataForm); }, watch:{ dialogVisible(newVal){ if(newVal){ this.unqualifiedNum = null this.fiedNum = null } }, }, methods:{ //é¡¹ç® // xxxx(){ // console.log(currentRow); // }, // äºä»¶å¤ç彿° // costPlannedAmountChange(value) { // console.log("==>"); // console.log(value.rawInsProducts); // this.userlist = value.rawInsProducts // this.list = this.userlist // console.log(this.list); // }, querySearch(queryString, cb) { var restaurants = this.restaurants; var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants; @@ -373,7 +365,6 @@ }, // 确认åè° selectPart(param, nodePart, index) { console.log("æå--",param); if (typeof param !== 'undefined') { this.dataForm.code = param.code this.dataForm.name = param.name @@ -385,21 +376,20 @@ this.dataForm.message = param.message this.dataForm.projectName = param.projectName this.projectList = param.rawInsProducts == null ? [] : param.rawInsProducts // param.rawInsProducts.forEach(item=>{ // this.list.push(item) // }) param.rawInsProducts.forEach(o=>{ this.clickAddLine(o) }) } }, queryCode(){ this.paramObj = { code: this.dataForm.code } console.log(this.paramObj); this.showPart = true }, updateDevice(row,index){ if(this.dataForm.id != null){ updateDeviceById({equiomentId:row.equipmentId,rpId:row.rpId}).then(res=>{ updateDeviceById({deviceId:row.deviceId,rpId:row.rpId}).then(res=>{ this.list[index].testValue = '' this.list[index].testState = null this.list[index].testValueList = [] @@ -436,24 +426,24 @@ let data = { id: this.dataForm.id, number: this.unqualifiedNum, toLocationNo: this.fiedNum // toLocationNo: this.fiedNum } updateRawInspectsById(data).then(res => { if(res.data.code == 0){ sessionStorage.setItem("raw-resultVal-"+this.dataForm.id,res.data.data) this.$message.success("䏿¥æå"); this.dialogVisible = false this.checkTestState() } }); this.checkTestState() }, addTeatValueColumn(){ this.empiricalValueAdd = this.empiricalValueAdd + 1; }, // æ·»å è¡ clickAddLine() { clickAddLine(row) { let obj = { equipmentId: null, deviceId: null, name: "", required: "", testValue: "", @@ -461,6 +451,11 @@ testState: null, testValueList: [], }; if(row!=undefined){ obj.name = row.name obj.unit = row.unit obj.required = row.required } this.list.push(obj); }, // å é¤è¡ @@ -482,7 +477,7 @@ return } let obj = { equiomentId: row.equipmentId, deviceId: row.deviceId, rpId: row.rpId, testValue: row.testValueList.join(",") } @@ -508,9 +503,9 @@ this.dataForm.unit = data.runit this.dataForm.supplier = data.supplier this.dataForm.number = data.number this.dataForm.projectName = data.projectName this.dataForm.createTime = data.creatTime this.dataForm.createUser = data.createUser // this.dataForm.judgeState = data.judgeState let userNameList = [] this.list = [] data.children.forEach(item=>{ @@ -523,7 +518,7 @@ } } this.list.push({ equipmentId: item.equiomentId, deviceId: item.deviceId, deviceName: item.deviceName, name: item.rpName, required: item.required, @@ -562,7 +557,7 @@ }) }, getDeviceList(){ selectDevice(null).then(res=>{ selectDevice().then(res=>{ this.deviceList = res.data.data }) },