From bd4fdac0fee9cf4f96dd947fef6f6ae950a450fe Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期五, 01 九月 2023 17:07:48 +0800 Subject: [PATCH] modified: package.json modified: src/components/experiment/template_testReport/index.vue modified: src/views/experiment/checkTheReport/index.vue modified: src/views/experiment/inspectionApplication/index.vue modified: src/views/inspectionManagement/commissionInspection/index.vue modified: src/views/inspectionManagement/reportForInspection/index.vue --- src/views/inspectionManagement/reportForInspection/index.vue | 522 ++++++++++++++++++++++++++++++++++----------------------- 1 files changed, 310 insertions(+), 212 deletions(-) diff --git a/src/views/inspectionManagement/reportForInspection/index.vue b/src/views/inspectionManagement/reportForInspection/index.vue index b6a1fdb..f89e215 100644 --- a/src/views/inspectionManagement/reportForInspection/index.vue +++ b/src/views/inspectionManagement/reportForInspection/index.vue @@ -1,6 +1,6 @@ <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"> @@ -29,18 +29,32 @@ </el-form> </div> <el-dialog title="鏂板鍘熸潗鏂欐姤妫�" :visible.sync="addReportVisible" width="40%"> - <el-form v-model="insertData" label-position="left" label-width="80px"> - <el-form-item label="鏍囧噯绫诲瀷"> - <el-input v-model="insertData.materialName" /> + <el-form ref="addMaterialForm" :rules="insertRule" :model="insertData" :inline="true" label-position="right" + 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> - <el-form-item label="鐗╂枡鍚嶇О"> - <el-input v-model="insertData.materialName" /> + <el-form-item label="渚涜揣鍟嗗悕绉�:" prop="supplierName"> + <el-input v-model="insertData.supplierName" /> </el-form-item> - <el-form-item label="鎵ц鏍囧噯"> - <el-input v-model="insertData.standardName" /> + <el-form-item label="鏉愭枡鍚嶇О:" prop="mName"> + <el-select v-model="insertData.mName" placeholder="璇烽�夋嫨鏉愭枡鍚嶇О" @change="(val)=>{getSpecification(val)}"> + <el-option v-for="(item,index) in materialList" :key="index" :label="item.name" + :value="item.id"></el-option> + </el-select> </el-form-item> - <el-form-item label="瑙勬牸鍨嬪彿"> - <el-input v-model="insertData.specificationsName" /> + <el-form-item label="鏉愭枡缂栫爜:" prop="mCode"> + <el-input disabled v-model="insertData.mCode" /> + </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> + </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-form-item> </el-form> <span slot="footer" class="dialog-footer"> @@ -50,26 +64,18 @@ </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="800" :cell-style="{textAlign: 'center'}" + <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-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%" /> @@ -78,7 +84,6 @@ <el-table-column prop="quantity" label="鏁伴噺" min-width="5%" /> <el-table-column prop="inspectionDate" 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' }"> @@ -88,117 +93,49 @@ </el-table-column> <el-table-column label="鎿嶄綔" min-width="8%"> <template slot-scope="scope"> - <el-button type="text" size="small" @click="removeFun(scope.row)">鍒犻櫎</el-button> + <el-button type="text" size="small" @click="removeFun(scope.row,scope.$index)">鍒犻櫎</el-button> </template> </el-table-column> </el-table> <!-- 鍒嗛〉鍣� --> <div> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" - :current-page="currentPage" :page-sizes="[5, 10, 15, 20]" :page-size="pageSize" + :current-page="currentPage" :page-sizes="[10, 15, 20,30]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"> </el-pagination> </div> </div> </div> </div> - - <!-- 鐢熸垚鎶ユ鍗� --> - <div class="newPage" v-if="showNewPage"> - <!-- 鏂板椤甸潰 --> - <div class="inspectionForm"> - <el-form :model="inspectionForm" ref="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> + <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 @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> - <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 v-model="scope.row.checker" size="small" slot="append" style="width: 260px;"> - <el-option v-for="(item,index) in checkeroptions" :key="index" :value="item.value" - :label="item.label">{{ item.label }}</el-option> - </el-select> - </template> - </el-table-column> - <el-table-column prop="device" label="璇曢獙璁惧"> - <template slot-scope="scope"> - <el-select v-model="scope.row.device" size="small" slot="append" style="width: 260px;"> - <el-option v-for="(item,index) in deviceoptions" :key="index" :value="item.value" - :label="item.label">{{ item.label }}</el-option> - </el-select> - </template> - </el-table-column> - </el-table> - </div> - </div> + </el-dialog> </div> </template> @@ -206,14 +143,34 @@ import { getRawMaterialList, addInspect, - selectInspectsListById + selectInspectsListById, + selectUser, + selectEquipment, + deleteMaterial, + addMaterial, + getMaterielName, + getSpecification, + getChooseVersion, + lookProByVer } from '@/api/inspection/rawmaterial' export default { data() { return { - insertData: { - + standardLibraryData:[], + chooseVersion: [], + addInspectionForm: { + inspectionDate: [], + version: null }, + addInspectionFormRules: { + inspectionDate: [{ + required: true, + message: '璇烽�夋嫨鏃ユ湡鍖洪棿', + trigger: 'change' + }], + }, + addReportDialog: false, + insertData: {}, addReportVisible: false, checked: false, resultData: {}, @@ -225,80 +182,128 @@ state: '', date: '' }, + childrenOptions: [{ + value: 'zhinan', + label: '鎸囧崡', + children: [{ + value: 'shejiyuanze', + label: '璁捐鍘熷垯', + children: [{ + value: 'yizhi', + label: '涓�鑷�' + }, { + value: 'fankui', + label: '鍙嶉' + }, { + value: 'xiaolv', + label: '鏁堢巼' + }, { + value: 'kekong', + label: '鍙帶' + }] + }] + }], options: [{ - value: 0, + value: null, label: '鍏ㄩ儴' }, { value: 1, - label: '宸叉楠�' + label: '宸叉姤妫�' }, { - value: 2, - label: '寰呮楠�' - }], - deviceoptions: [{ value: 0, - label: '鎷夊姏鏈�' - }, { - value: 1, - label: '鎷栨媺鏈�' - }], - checkeroptions: [{ - value: 0, - label: '榛勫皬鏄�' - }, { - value: 1, - label: '寮犱笁' + label: '鏈姤妫�' }], radioOptions: [{ label: '鍏ㄩ儴', - value: 0 + value: null }, { value: 1, - label: '宸叉楠�' + label: '宸叉姤妫�' }, { - value: 2, - label: '寰呮楠�' + value: 0, + label: '鏈姤妫�' }], - radioValue: 0, - 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 - }], + radioValue: null, + inspectionTable: [], currentPage: 1, - pageSize: 5, + pageSize: 10, total: 20, data: '', - showNewPage: false, - inspectionForm: {}, - inspectionItems: [] + insertRule: { + fromDate: [{ + required: true, + message: '璇烽�夋嫨鏉ユ枡鏃ユ湡', + trigger: 'blur' + }], + supplierName: [{ + required: true, + message: '璇疯緭鍏ヤ緵搴斿晢鍚嶇О', + trigger: 'blur' + }], + mName: [{ + required: true, + message: '璇烽�夋嫨鐗╂枡鍚嶇О', + trigger: 'blur' + }], + mCode: [{ + required: true, + message: '璇烽�夋嫨鐗╂枡', + trigger: 'blur' + }], + specificationsNumber: [{ + required: true, + message: '璇烽�夋嫨瑙勬牸鍨嬪彿', + trigger: 'blur' + }], + unit: [{ + required: true, + message: '璇疯緭鍏ュ崟浣�', + trigger: 'blur' + }], + num: [{ + required: true, + message: '璇疯緭鍏ユ姤妫�鏁伴噺', + trigger: 'blur' + }] + }, + materialList: [] } }, created() { this.getRawMaterialList() }, + mounted() { + this.getMaterielName(); + }, methods: { - removeFun(row) { + handleChange() { + + }, + async deleteMaterialFun(row, index) { + let formData = new FormData(); + formData.append("deleteId", row.id) + await deleteMaterial(formData).then(() => { + this.inspectionTable.splice(index, 1); + this.$message.success("鍒犻櫎鎴愬姛"); + }).catch(error => { + this.$message.error(error.message); + }); + }, + resetForm(formName) { + this.addInspectionForm.inspectionDate = [], + this.$refs[formName].resetFields(); + this.addReportDialog = false + }, + removeFun(row, index) { this.$confirm('纭鍒犻櫎璇ユ暟鎹悧?', '鎻愮ず', { confirmButtonText: '纭畾', cancelButtonText: '鍙栨秷', type: 'warning' }).then(() => { - this.$message({ - type: 'success', - message: '鍒犻櫎鎴愬姛!' - }); + this.deleteMaterialFun(row, index); }).catch(() => {}); }, - checkSelect(row, index) { + checkSelect(row) { if (row.type === 1) { return false; } else { @@ -306,49 +311,100 @@ } }, handleSelectionChange(val) { + if (val.length > 1) { + this.$refs.inspectionTable.clearSelection(); + this.$refs.inspectionTable.toggleRowSelection(val.pop()) + } this.checkData = val; }, //鐢熸垚鎶ユ鍗曟寜閽� addReportBtn() { - let arr = this.checkData; - if (arr.length < 1) { + if (this.checkData.length < 1) { this.$message.error("璇烽�夋嫨涓�鏉℃暟鎹�!"); } else { - if (arr.length > 1) { + if (this.checkData.length > 1) { this.$message.error("鏈�澶氶�夋嫨涓�鏉℃暟鎹�!"); } else { - //娣诲姞鎶ユ鍗� - let val = arr[0]; - let obj = { - "endTime": val.dateSurvey, - "experiment": "", - "formTime": val.createTime, - "id": val.id, - "mcode": val.materialCoding, - "name": val.materialName, - "num": val.quantity, - "specifications": val.specificationsModels, - "startTime": val.inspectionDate, - "supplier": val.supplierName, - "type": val.type, - "unit": val.unit, - "version": val.version - } - this.createReport(obj); - this.showNewPage = true; + let mcode = this.checkData[0].materialCoding; + let name = this.checkData[0].materialName; + let specifications = this.checkData[0].specificationsModels; + this.getChooseVersionFun(mcode,name,specifications); + 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)=>{ + vm.standardLibraryData = res.data; + }) + + }, + //鑾峰彇鐗堟湰鍒楄〃 + 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) { + 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, + "id": val.id, + "mcode": val.materialCoding, + "name": val.materialName, + "num": val.quantity, + "specifications": val.specificationsModels, + "startTime": dateArr[0], + "supplier": val.supplierName, + "type": val.type, + "unit": val.unit, + "version": this.addInspectionForm.version + } + this.createReport(obj); + this.addReportDialog = false; + } + })); + }, + //鐢熸垚鎶ユ鍗� async createReport(param) { - await addInspect(param); - const res2 = await selectInspectsListById({ - id: 59 - }); - this.resultData = res2.data; - this.inspectionForm = res2.data; - this.inspectionItems = res2.data.insProducts; - + let res = await addInspect(param); + if(res.data==null)return + this.$message.success('鎶ユ鎴愬姛') + this.$router.push(`/experiment/Viewdetails/${res.data}`) }, // 鑾峰彇鍒嗛〉鍒楄〃鏁版嵁 async getRawMaterialList() { @@ -363,7 +419,7 @@ async search() { this.radioValue = this.searchData.state const res = await getRawMaterialList({ - condition: this.searchData.state, + type: this.searchData.state, createTime: this.searchData.date, materialCoding: this.searchData.code, materialName: this.searchData.name, @@ -383,16 +439,6 @@ } this.getRawMaterialList() }, - radioclick() { - this.searchData.state = this.radioValue - this.inspectionTable = this.data.filter((item) => { - return item.condition === this.radioValue - }) - if (this.radioValue === 0) { - this.inspectionTable = this.data - } - this.total = this.inspectionTable.length - }, // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 handleSizeChange(val) { this.pageSize = val @@ -407,6 +453,53 @@ this.getRawMaterialList({ pageNo: this.currentPage, pageSize: this.pageSize + }) + }, + insert() { + this.$refs['addMaterialForm'].validate((valid) => { + if (valid) { + 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], + "supplierName": this.insertData.supplierName, + "type": 0, + "unit": this.insertData.unit + } + this.materialList.forEach(a => { + if (a.id == str.materialName) { + str.materialName = a.name + } + }) + addMaterial(str).then(res => { + this.$message.success('娣诲姞鎴愬姛') + this.addReportVisible = false + this.getRawMaterialList() + }) + } else { + return false; + } + }); + }, + getMaterielName() { + getMaterielName().then(res => { + this.materialList = res.data + }) + }, + getSpecification(val) { + this.materialList.forEach(a => { + if (a.id == val) { + this.insertData.mCode = a.code + } + }) + getSpecification({ + materialId: val + }).then(res => { + this.childrenOptions = JSON.parse(JSON.stringify(res.data).replaceAll('specifications', '').replaceAll( + 'model', '')) }) } } @@ -442,10 +535,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; } @@ -510,4 +608,4 @@ } } } -</style> +</style> \ No newline at end of file -- Gitblit v1.9.3