From efcf450e8e7e375ef4ffe9f421ec0d34c5378180 Mon Sep 17 00:00:00 2001 From: Fixiaobai <fixiaobai@163.com> Date: 星期四, 07 九月 2023 14:02:32 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.218.113:9001/r/lims-before --- src/views/inspectionManagement/reportForInspection/index.vue | 391 ++++++++++++++++++++++--------------------------------- 1 files changed, 157 insertions(+), 234 deletions(-) diff --git a/src/views/inspectionManagement/reportForInspection/index.vue b/src/views/inspectionManagement/reportForInspection/index.vue index dbc9c18..e3dd70b 100644 --- a/src/views/inspectionManagement/reportForInspection/index.vue +++ b/src/views/inspectionManagement/reportForInspection/index.vue @@ -1,36 +1,36 @@ <template> <div class="content-main"> - <div class="rawPage" v-if="!showNewPage"> + <div class="rawPage"> <div class="top-bar"> <el-form ref="form" :inline="true" :model="searchData"> <el-form-item label="鏉愭枡缂栫爜:" position="left" class="sermargin"> - <el-input v-model="searchData.code" class="input-form" placeholder="璇疯緭鍏�"> + <el-input size="small" v-model="searchData.code" class="input-form" placeholder="璇疯緭鍏�"> </el-input> </el-form-item> <el-form-item label="鏉愭枡鍚嶇О:" class="sermargin"> - <el-input v-model="searchData.name" class="input-form" placeholder="璇疯緭鍏�"> + <el-input size="small" v-model="searchData.name" class="input-form" placeholder="璇疯緭鍏ユ潗鏂欏悕绉�"> </el-input> </el-form-item> <el-form-item label="鐘舵��:" class="sermargin"> - <el-select v-model="searchData.state" placeholder="鍏ㄩ儴"> + <el-select size="small" v-model="searchData.state" placeholder="鍏ㄩ儴"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </el-form-item> <el-form-item label="鏉ユ枡鏃ユ湡:" style="margin-right: 20px;"> - <el-input v-model="searchData.date" class="input-form" placeholder="璇疯緭鍏�"> - </el-input> + <el-date-picker size="small" value-format="yyyy-MM-dd" v-model="searchData.date" class="input-form" placeholder="璇烽�夋嫨鏉ユ枡鏃ユ湡"> + </el-date-picker> </el-form-item> <el-form-item> - <el-button type="primary" @click="search">鏌ヨ</el-button> - <el-button type="primary" plain @click="reset">閲嶇疆</el-button> - <el-button type="primary" icon="el-icon-plus" @click="addReportVisible = true">鏂板</el-button> + <el-button size="small" type="primary" @click="search">鏌ヨ</el-button> + <el-button size="small" type="primary" plain @click="reset">閲嶇疆</el-button> + <el-button size="small" type="primary" icon="el-icon-plus" @click="addReportVisible = true">鏂板</el-button> </el-form-item> </el-form> </div> <el-dialog title="鏂板鍘熸潗鏂欐姤妫�" :visible.sync="addReportVisible" width="40%"> <el-form ref="addMaterialForm" :rules="insertRule" :model="insertData" :inline="true" label-position="right" - label-width="80px"> + label-width="100px"> <el-form-item label="鏉ユ枡鏃ユ湡:" prop="fromDate"> <el-date-picker v-model="insertData.fromDate" type="date" value-format="yyyy-MM-dd"></el-date-picker> </el-form-item> @@ -48,13 +48,13 @@ </el-form-item> <el-form-item label="瑙勬牸鍨嬪彿:" prop="specificationsNumber"> <el-cascader v-model="insertData.specificationsNumber" :options="childrenOptions" - :props="{label: 'Name', value: 'Name'}" separator="-"></el-cascader> + :props="{label: 'Name', value: 'Id'}" separator="-"></el-cascader> </el-form-item> <el-form-item label="鍗曚綅:" prop="unit"> <el-input type="text" v-model="insertData.unit" /> </el-form-item> <el-form-item label="鏁伴噺:" prop="num"> - <el-input type="number" v-model="insertData.num" /> + <el-input type="number" min="0" v-model="insertData.num"/> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> @@ -64,25 +64,20 @@ </el-dialog> <div class="library-table"> <div class="table-header"> - <div class="search-bar"> - <el-radio-group v-model="radioValue" @change="radioclick"> - <el-radio-button v-for="option in radioOptions" :key="option.value" - :label="option.value">{{ option.label }}</el-radio-button> - </el-radio-group> - </div> <div class="generateInsp"> <el-button @click="addReportBtn" type="primary" size="mini" icon="el-icon-document" style="background-color: rgb(1, 102, 226);">鐢熸垚鎶ユ鍗�</el-button> </div> </div> <div class="table-box"> - <el-table ref="inspectionTable" :max-height="600" :cell-style="{textAlign: 'center'}" - :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" - :data="inspectionTable" style="width: 100%" @selection-change="handleSelectionChange"> - <el-table-column type="selection" :selectable="checkSelect" min-width="5%"> - </el-table-column> + <el-table ref="inspectionTable" :max-height="450" :cell-style="{textAlign: 'left'}" + :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'left'}" + :data="inspectionTable" style="width: 100%" @selection-change="handleSelectionChange" + :default-sort = "{prop: 'createTime', order: 'descending'}" + > + <el-table-column type="selection" :selectable="checkSelect" min-width="5%"></el-table-column> <el-table-column type="index" label="搴忓彿" min-width="8%" /> - <el-table-column prop="createTime" label="鏉ユ枡鏃ユ湡" min-width="8%" /> + <el-table-column prop="dateSurvey" label="鏉ユ枡鏃ユ湡" min-width="8%" /> <el-table-column prop="supplierName" label="渚涘簲鍟嗗悕绉�" min-width="12%" /> <el-table-column prop="materialCoding" label="鏉愭枡缂栫爜" min-width="8%" /> <el-table-column prop="materialName" label="鏉愭枡鍚嶇О" min-width="8%" /> @@ -90,8 +85,8 @@ <el-table-column prop="unit" label="鍗曚綅" min-width="5%" /> <el-table-column prop="quantity" label="鏁伴噺" min-width="5%" /> <el-table-column prop="inspectionDate" label="鎶ユ鏃ユ湡" min-width="8%" /> + <el-table-column v-if="1===0" prop="createTime" label="鏃ユ湡" min-width="8%" /> <el-table-column prop="surveyor" label="妫�楠屼汉" min-width="8%" /> - <el-table-column prop="dateSurvey" label="妫�楠屾棩鏈�" min-width="8%" /> <el-table-column prop="type" label="鐘舵��" min-width="8%"> <template slot-scope="scope"> <span :style="{ color: scope.row.type === 1 ? 'green' : 'red' }"> @@ -115,123 +110,35 @@ </div> </div> </div> - <el-dialog title="閫夋嫨鏃ユ湡" :visible.sync="addReportDialog" width="30%"> - <el-form :model="addInspectionForm" :rules="addInspectionFormRules" rule="addInspectionForm"> + <el-dialog title="閫夋嫨鏃ユ湡" :visible.sync="addReportDialog" width="60%"> + <el-form :model="addInspectionForm" :rules="addInspectionFormRules" ref="addInspectionForm"> <el-form-item label="妫�楠屾棩鏈�" label-width="100px" prop="inspectionDate"> <el-date-picker v-model="addInspectionForm.inspectionDate" type="daterange" value-format="yyyy-MM-dd" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡"> </el-date-picker> </el-form-item> - <el-form-item label="鐗堟湰" label-width="100px" prop="version"> - <el-select v-model="addInspectionForm.version" placeholder="璇烽�夋嫨鐗堟湰"> - <el-option v-for="(item,index) in 5" :key="index" :value="item" :label="item"></el-option> + <el-form-item label="褰撳墠鐗堟湰" label-width="100px" prop="version"> + <el-select @change="changeVersionFun" v-model="addInspectionForm.version" placeholder="璇烽�夋嫨鐗堟湰"> + <el-option v-for="item in chooseVersion" :key="item.value" :label="item.label" :value="item.value" ></el-option> </el-select> </el-form-item> </el-form> + <el-table + style="width:90%;margin-left:5%" + :data="standardLibraryData" row-key="id" border + default-expand-all ref="multipleTable" + :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"> + <el-table-column type="index" width="50px" label="搴忓彿"></el-table-column> + <el-table-column label="椤圭洰鍚嶇О" prop="name" sortable></el-table-column> + <el-table-column prop="unit" label="鍗曚綅" sortable></el-table-column> + <el-table-column label="鏍囧噯鍊�" prop="required" sortable></el-table-column> + <el-table-column prop="internal" label="鍐呮帶鍊�" sortable></el-table-column> + </el-table> <div slot="footer" class="dialog-footer"> <el-button @click="resetForm('addInspectionForm')">鍙� 娑�</el-button> <el-button type="primary" @click="confirmBtn('addInspectionForm')">纭� 瀹�</el-button> </div> </el-dialog> - - <!-- 鐢熸垚鎶ユ鍗� --> - <div class="newPage" v-if="showNewPage"> - <!-- 鏂板椤甸潰 --> - <div class="inspectionForm"> - <el-form :model="inspectionForm" label-position="right" label-width="100px" size="mini"> - <div class="formwrapper"> - <el-row> - <el-col :span="8"> - <el-form-item label="鏉ユ枡鏃ユ湡锛�"> - <el-input style="width: 180px;" :value="inspectionForm.formTime" disabled autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="8"> - <el-form-item label="渚涘簲鍟嗗悕绉帮細"> - <el-input style="width: 180px;" :value="inspectionForm.supplier" disabled autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="8"> - <el-form-item label="鏍峰搧缂栧彿锛�"> - <el-input style="width: 180px;" :value="inspectionForm.code" disabled autocomplete="off" /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="8"> - <el-form-item label="鏍峰搧鍚嶇О锛�"> - <el-input style="width: 180px;" :value="inspectionForm.name" disabled autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="8"> - <el-form-item label="瑙勬牸鍨嬪彿锛�"> - <el-input style="width: 180px;" :value="inspectionForm.specifications" disabled autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="8"> - <el-form-item label="鍗曚綅锛�"> - <el-input style="width: 180px;" :value="inspectionForm.unit" disabled autocomplete="off" /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="8"> - <el-form-item label="鏁伴噺锛�"> - <el-input style="width: 180px;" :value="inspectionForm.num" disabled autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="8"> - <el-form-item label="鎶ユ鏃ユ湡锛�"> - <el-input style="width: 180px;" :value="inspectionForm.endTime" disabled autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="8"> - <el-form-item label="鎶ユ浜猴細"> - <el-input style="width: 180px;" :value="inspectionForm.userName" disabled autocomplete="off" /> - </el-form-item> - </el-col> - </el-row> - </div> - </el-form> - </div> - <div class="inspectionProject"> - <div class="header"> - <span style="font-size: 14px">妫�楠岄」鐩�</span> - <div> - <!-- <el-button type="primary" plain size="mini">淇濆瓨</el-button> --> - <el-button @click="showNewPage = false" type="primary" plain size="mini" icon="el-icon-back">杩斿洖</el-button> - </div> - </div> - <el-table :max-height="800" :cell-style="{textAlign: 'center'}" - :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" - :data="inspectionItems"> - <el-table-column type="index" label="搴忓彿" width="60"></el-table-column> - <el-table-column prop="name" label="椤圭洰" width="250"></el-table-column> - <el-table-column prop="unit" label="鍗曚綅" width="125"></el-table-column> - <el-table-column prop="required" label="鏍囧噯鍊�" width="125"></el-table-column> - <el-table-column prop="internal" label="鍐呮祴鍊�" width="125"></el-table-column> - <el-table-column prop="testValue" label="妫�楠屽��" width="125"></el-table-column> - <el-table-column prop="userName" label="妫�楠屼汉"> - <template slot-scope="scope"> - <el-select @blur="blurOptions(scope.row)" v-model="scope.row.check" size="small" slot="append" - style="width: 260px;"> - <el-option v-for="(item,index) in checkeroptions" :key="index" :value="item.id" - :label="item.name"></el-option> - </el-select> - </template> - </el-table-column> - <el-table-column prop="device" label="璇曢獙璁惧"> - <template slot-scope="scope"> - <el-select @blur="blurOptions(scope.row)" v-model="scope.row.device" size="small" slot="append" - style="width: 260px;"> - <el-option v-for="(item,index) in deviceoptions" :key="index" :value="item.id" - :label="item.equipmentName"></el-option> - </el-select> - </template> - </el-table-column> - </el-table> - </div> - </div> </div> </template> @@ -239,22 +146,21 @@ import { getRawMaterialList, addInspect, - selectInspectsListById, - selectUser, - selectEquipment, deleteMaterial, addMaterial, getMaterielName, - getSpecification + getSpecification, + getChooseVersion, + lookProByVer } from '@/api/inspection/rawmaterial' export default { data() { return { - userName: "", - devices: "", + standardLibraryData:[], + chooseVersion: [], addInspectionForm: { - inspectionDate: ['2023-08-01', '2023-08-31'], - version: 5 + inspectionDate: [], + version: null }, addInspectionFormRules: { inspectionDate: [{ @@ -307,20 +213,6 @@ value: 0, label: '鏈姤妫�' }], - deviceoptions: [{ - value: 0, - label: '鎷夊姏鏈�' - }, { - value: 1, - label: '鎷栨媺鏈�' - }], - checkeroptions: [{ - value: 0, - label: '榛勫皬鏄�' - }, { - value: 1, - label: '寮犱笁' - }], radioOptions: [{ label: '鍏ㄩ儴', value: null @@ -332,69 +224,45 @@ label: '鏈姤妫�' }], radioValue: null, - inspectionTable: [{ - createTime: '2023-07-28', - supplier_name: '鍥界綉灞变笢鐪佺數鍔涙湁闄愬叕鍙�', - materialCoding: 'BP214274', - materialName: '閾濆寘閽㈢粸绾�', - specificationsModels: 'JLHA/G1A-185/30-26/7', - unit: '鍚�', - quantity: 21, - dateSurvey: '2023-08-02', - surveyor: '榛勫皬鏄�', - inspectionDate: '2023-12-09', - condition: 1 - }], + inspectionTable: [], currentPage: 1, pageSize: 10, total: 20, data: '', - showNewPage: false, - inspectionForm: {}, - inspectionItems: [{ - index: 1, - name: "aaa", - unit: "KB", - required: "1", - internal: "2", - testValue: "3", - userName: "", - device: "" - }], insertRule: { fromDate: [{ required: true, - message: '璇疯緭鍏ユ椿鍔ㄥ悕绉�', + message: '璇烽�夋嫨鏉ユ枡鏃ユ湡', trigger: 'blur' }], supplierName: [{ required: true, - message: '璇疯緭鍏ユ椿鍔ㄥ悕绉�', + message: '璇疯緭鍏ヤ緵搴斿晢鍚嶇О', trigger: 'blur' }], mName: [{ required: true, - message: '璇疯緭鍏ユ椿鍔ㄥ悕绉�', + message: '璇烽�夋嫨鐗╂枡鍚嶇О', trigger: 'blur' }], mCode: [{ required: true, - message: '璇疯緭鍏ユ椿鍔ㄥ悕绉�', + message: '璇烽�夋嫨鐗╂枡', trigger: 'blur' }], specificationsNumber: [{ required: true, - message: '璇疯緭鍏ユ椿鍔ㄥ悕绉�', + message: '璇烽�夋嫨瑙勬牸鍨嬪彿', trigger: 'blur' }], unit: [{ required: true, - message: '璇疯緭鍏ユ椿鍔ㄥ悕绉�', + message: '璇疯緭鍏ュ崟浣�', trigger: 'blur' }], num: [{ required: true, - message: '璇疯緭鍏ユ椿鍔ㄥ悕绉�', + message: '璇疯緭鍏ユ姤妫�鏁伴噺', trigger: 'blur' }] }, @@ -405,7 +273,14 @@ this.getRawMaterialList() }, mounted() { - this.getMaterielName() + this.getMaterielName(); + }, + watch:{ + addReportDialog(newVal){ + if(newVal === false){ + this.resetForm("addInspectionForm"); + } + } }, methods: { handleChange() { @@ -421,19 +296,10 @@ this.$message.error(error.message); }); }, - blurOptions(row) { - console.log("鏇存柊", row); - }, - async initNewSelection() { - const res = await selectUser(); - const res2 = await selectEquipment(); - this.checkeroptions = res.data; - this.deviceoptions = res2.data; - }, resetForm(formName) { - // this.addInspectionForm.inspectionDate = [], - // this.$refs[formName].resetFields(); - // this.addReportDialog = false + this.addInspectionForm.inspectionDate = [], + this.$refs[formName].resetFields(); + this.addReportDialog = false }, removeFun(row, index) { this.$confirm('纭鍒犻櫎璇ユ暟鎹悧?', '鎻愮ず', { @@ -441,11 +307,10 @@ cancelButtonText: '鍙栨秷', type: 'warning' }).then(() => { - console.log(row.id); this.deleteMaterialFun(row, index); }).catch(() => {}); }, - checkSelect(row, index) { + checkSelect(row) { if (row.type === 1) { return false; } else { @@ -453,7 +318,14 @@ } }, handleSelectionChange(val) { - this.checkData = val; + if (val.length > 1) { + let data = val.pop(); + this.$refs.inspectionTable.clearSelection(); + this.$refs.inspectionTable.toggleRowSelection(data); + this.checkData = new Array(data); + }else{ + this.checkData = val; + } }, //鐢熸垚鎶ユ鍗曟寜閽� addReportBtn() { @@ -463,16 +335,65 @@ if (this.checkData.length > 1) { this.$message.error("鏈�澶氶�夋嫨涓�鏉℃暟鎹�!"); } else { + let mcode = this.checkData[0].materialCoding; + let name = this.checkData[0].materialName; + let speId = this.checkData[0].specificationsId; + this.getChooseVersionFun(mcode,name,speId); this.addReportDialog = true; } } }, + changeVersionFun(){ + let mCode = this.checkData[0].materialCoding; + let name = this.checkData[0].materialName; + let specifications = this.checkData[0].specificationsModels; + let version = this.addInspectionForm.version; + this.getProByVersion(mCode,name,specifications,version); + }, + //鑾峰彇鐗堟湰涓嬬殑鏍囧噯搴撴暟鎹� + async getProByVersion(mCode,name,specifications,version){ + var vm = this; + await lookProByVer({ + mcode : mCode, + name : name, + specifications : specifications, + version: version + }).then((res)=>{ + var arr = res.data; + for(var i=0;i<arr.length;i++){ + arr[i].id = "0" + i; + } + vm.standardLibraryData = arr; + }) + + }, + //鑾峰彇鐗堟湰鍒楄〃 + async getChooseVersionFun(mCode,name,specifications){ + var vm = this; + this.chooseVersion = []; + await getChooseVersion({ + mcode : mCode, + name : name, + specifications : specifications + }).then((res)=>{ + vm.getProByVersion(mCode,name,specifications,res.data[0]) + for(let i=0;i<res.data.length;i++){ + vm.chooseVersion.push({ + value: res.data[i], + label: "V"+res.data[i] + }); + } + vm.addInspectionForm.version = res.data[0]; + }); + }, //鐢熸垚鎶ユ鍗曠‘璁ゆ寜閽� confirmBtn(formName) { - let dateArr = this.addInspectionForm.inspectionDate; - //娣诲姞鎶ユ鍗� - let val = this.checkData[0]; - let obj = { + this.$refs[formName].validate((valid=>{ + if(valid){ + let dateArr = this.addInspectionForm.inspectionDate; + //娣诲姞鎶ユ鍗� + let val = this.checkData[0]; + let obj = { "endTime": dateArr[1], "experiment": "", "formTime": val.createTime, @@ -481,27 +402,27 @@ "name": val.materialName, "num": val.quantity, "specifications": val.specificationsModels, + "specificationId": val.specificationsId, "startTime": dateArr[0], "supplier": val.supplierName, "type": val.type, "unit": val.unit, - "version": val.version + "version": this.addInspectionForm.version + } + this.createReport(obj); + this.addReportDialog = false; } - // this.createReport(obj); - this.addReportDialog = false; - this.initNewSelection(); - this.showNewPage = true; + })); }, - //鐢熸垚鎶ヤ环鍗� + //鐢熸垚鎶ユ鍗� async createReport(param) { - let res = await addInspect(param); - const res2 = await selectInspectsListById({ - id: res.data + await addInspect(param).then(res =>{ + this.search(); + this.$message.success('鎶ユ鎴愬姛') + this.$router.push(`/experiment/Viewdetails/${res.data}`) + }).catch(error =>{ + this.$message.error(error.message) }); - this.resultData = res2.data; - this.inspectionForm = res2.data; - this.inspectionItems = res2.data.insProducts; - }, // 鑾峰彇鍒嗛〉鍒楄〃鏁版嵁 async getRawMaterialList() { @@ -536,21 +457,6 @@ } this.getRawMaterialList() }, - radioclick() { - console.log(this.inspectionTable); - if (this.radioValue === 0) { - - } - }, - getAllTableData() { - this.getRawMaterialList() - }, - getCheckData() { - - }, - getUnCheckData() { - - }, // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 handleSizeChange(val) { this.pageSize = val @@ -570,13 +476,25 @@ insert() { this.$refs['addMaterialForm'].validate((valid) => { if (valid) { + console.log(this.childrenOptions); + console.log(this.insertData); + let f=this.childrenOptions.filter(item=>{ + return item.Id===this.insertData.specificationsNumber[0] + })[0] + console.log(f); + let fatherName=f.Name; + let c=f.children.filter(item=>{ + return item.Id===this.insertData.specificationsNumber[1] + })[0] + let sonName=c.Name + let specificationsId=c.Id; var str = { "dateSurvey": this.insertData.fromDate, "materialCoding": this.insertData.mCode, "materialName": this.insertData.mName, "quantity": this.insertData.num, - "specificationsModels": this.insertData.specificationsNumber[0] + '-' + this.insertData - .specificationsNumber[1], + "specificationsModels": fatherName+ '-' + sonName, + "specificationsId": specificationsId, "supplierName": this.insertData.supplierName, "type": 0, "unit": this.insertData.unit @@ -647,10 +565,15 @@ flex-direction: column; .table-header { + width: 100%; + height: 70px; padding: 20px; display: flex; justify-content: space-between; - + .generateInsp{ + position: relative; + left: 92%; + } .el-form-item { margin-bottom: 30px !important; } -- Gitblit v1.9.3