From 49a5757c36d73524c74bc27fcecf486368d80311 Mon Sep 17 00:00:00 2001 From: 王震 <10952869+daywangzhen@user.noreply.gitee.com> Date: 星期二, 12 九月 2023 09:08:22 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/components/view/Processingproducts.vue | 6 src/components/view/processInspection.vue | 987 ++++++++++++++---------- src/assets/api/controller.js | 17 src/components/view/standard-table/material.vue | 100 + src/components/view/standard-table/product.vue | 130 +++ src/components/view/standard-box/bomClickAdd.vue | 15 src/components/view/raw-ins.vue | 2 src/components/view/standard.vue | 609 ++++++++++++++- src/components/view/standard-table/target.vue | 171 ++++ src/components/view/rawInsDetail.vue | 10 src/components/view/standard-table/technology.vue | 144 ++ src/components/view/rawUnqualified/raw.vue | 64 + src/components/view/unqualifiedManagement.vue | 73 + 13 files changed, 1,789 insertions(+), 539 deletions(-) diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js index 5b42371..e9119f5 100644 --- a/src/assets/api/controller.js +++ b/src/assets/api/controller.js @@ -6,6 +6,14 @@ selectProductByMaterial: "product/selectTreeByMaterial", //鏍规嵁鐗╂枡鏌ヨ椤圭洰琛ㄦ牸 selectTechnologyByMaterial: "technology/select", selectAll:"/material/selectAll",//鍙充晶鏁版嵁 + technologyWrite:"/technology/write",//宸ヨ壓璺嚎锛岀Щ寮�淇濆瓨鐢熶骇瀹氶 + productWrite:"/product/write",//鎶�鏈寚鏍囷紝绉诲紑淇濆瓨鍐呮帶鍊煎拰鏍囧噯鍊� + chooseFather: "/technology/chooseFather",//鑾峰彇宸ュ簭鍒楄〃 + chooseDevice: "/technology/chooseDevice",//鑾峰彇璁惧缁勫垪琛� + addTechnology: "/technology/add",//娣诲姞宸ヨ壓璺嚎 + leftAddOneTwo: "/material/add",//宸︿晶鏂板1锛�2绾� + leftAddThree: "/standard/add",//宸︿晶涓夌骇鏂板 + leftAddFour: "/specifications/add",//宸︿晶鍥涚骇鏂板 // 鎶�鏈鐞�-鎶�鏈枃浠� selectAllOrder: "/orders/selectAllOrder", //鏌ヨ鎵�鏈夎鍗曞垪琛� selectOrderById: "/orders/selectOrderById", //鏍规嵁璁㈠崟id鏌ヨ璁㈠崟璇︽儏 @@ -27,7 +35,8 @@ } //涓嶅悎鏍煎師鏉愭枡 const unqualifiedaa ={ - selectUnRawInspectsList: "/inspectUnaccepted/selectURawMaterials" + selectUnRawInspectsList: "/inspectUnaccepted/selectURawMaterials", // 鏌ヨ鍘熸潗鏂欎笉鍚堟牸鍝佹楠屽崟鍒楄〃 + evaluatePassOrNo: "/inspectUnaccepted/evaluatePassOrNo" // 璇勫 } // 鏌ヨ鎴愬搧涓嶅悎鏍煎搧绠$悊 const unRawInspects ={ @@ -49,7 +58,10 @@ projectListByfinishId: "/inspection-item/list_user", //鏍规嵁id鏌ヨ鎵�鏈夐」鐩� } - +// 杩囩▼妫�楠� +const processInspection = { + selectProcessInspectsList: "/processInspect/selectProcessInspectsList", // 鍒嗛〉鏌ヨ杩囩▼妫�楠屽崟鍒楄〃 +} // QMS瀹為獙瀹ょ鐞� const laboratory = { delDeviceById:"/device/delDeviceById",//鍒犻櫎 @@ -135,6 +147,7 @@ ...dispose, ...Basicdata, ...unRawInspects, + ...processInspection, // ...gettable, selectSaleList: "sale/selectSaleList", //鏌ヨ閿�鍞崟鍒楄〃 selectSaleDatilById: "sale/selectSaleDatilById", //鏍规嵁閿�鍞崟id鏌ョ湅璇︽儏, diff --git a/src/components/view/Processingproducts.vue b/src/components/view/Processingproducts.vue index d4ed2a1..a9dcf00 100644 --- a/src/components/view/Processingproducts.vue +++ b/src/components/view/Processingproducts.vue @@ -157,7 +157,11 @@ </el-card> </div> <el-dialog title="鎻愮ず" :visible.sync="dialogVisible" width="30%"> - <el-form label-width="130px"> + <el-form label-width="130px" style="height: 500px; overflow: auto ;"> + <el-empty + v-if="updateEditList.length == 0" + :image-size="200" + ></el-empty> <div v-for="item in updateEditList" :key="item.$index"> <el-form-item :label=" diff --git a/src/components/view/processInspection.vue b/src/components/view/processInspection.vue index 1ab23ed..f844244 100644 --- a/src/components/view/processInspection.vue +++ b/src/components/view/processInspection.vue @@ -1,435 +1,588 @@ <template> - <div class="content-main"> - <div v-if="!showAddPage" class="rawPage"> - <div class="title"> + <div class="content-main"> + <div v-if="!showAddPage" class="rawPage"> + <div class="title"> <el-row> <el-col :span="12">杩囩▼妫�楠�</el-col> <el-col :span="12" style="text-align: right;"> - <el-button @click="handleAddNew" type="primary" size="mini" icon="el-icon-plus" style="background: #004EA2; ">鏂板</el-button> - <el-button icon="el-icon-delete" size="mini">鍒犻櫎</el-button> + <el-button + @click="handleAddNew" + type="primary" + size="mini" + icon="el-icon-plus" + style="background: #004EA2; " + >鏂板</el-button + > <el-button icon="el-icon-download" size="mini">瀵煎嚭</el-button> </el-col> </el-row> </div> <div class="nav"> - <span>妫�楠岀粨鏋滐細</span> - <el-select v-model="inspectionResult" size="small" placeholder="璇烽�夋嫨" style="width: 224px;margin-right: 52px;"> - <el-option value="閫夐」1"></el-option> - <el-option value="閫夐」2"></el-option> - </el-select> - <span>妫�楠屾棩鏈燂細</span> - <el-date-picker - v-model="inspectionDate" - type="date" - placeholder="閫夋嫨鏃ユ湡" - style="margin-right: 52px"> - </el-date-picker> - <span>妫�楠屼汉锛�</span> - <el-select v-model="inspecter" size="small" placeholder="璇烽�夋嫨" style="width: 224px;margin-right: 52px;"> - <el-option value="閫夐」1"></el-option> - <el-option value="閫夐」2"></el-option> - </el-select> - <el-button size="mini"><span>閲� 缃�</span></el-button> - <el-button size="mini" type="primary" style="background: #004EA2;"><span>鏌� 璇�</span></el-button> + <span>妫�楠岀姸鎬侊細</span> + <el-select + size="small" + v-model="search.result" + placeholder="璇烽�夋嫨妫�娴嬬姸鎬�" + style="width: 224px;margin-right: 52px;" + > + <el-option :value="''" label="鍏ㄩ儴"></el-option> + <el-option :value="1" label="宸叉娴�"></el-option> + <el-option :value="2" label="寰呮娴�"></el-option> + </el-select> + <span>浜у搧鍚嶇О锛�</span> + <el-input + size="small" + style="width: 224px;margin-right: 30px;" + v-model="search.name" + placeholder="璇疯緭鍏ヤ骇鍝佸悕绉�" + ></el-input> + <span>宸ュ簭锛�</span> + <el-input + size="small" + style="width: 224px;margin-right: 30px;" + v-model="search.techfather" + placeholder="璇疯緭鍏ュ伐搴�" + ></el-input> + <el-button size="mini"><span>閲� 缃�</span></el-button> + <el-button size="mini" type="primary" style="background: #004EA2;" + ><span>鏌� 璇�</span></el-button + > </div> <div class="content-body"> - <div class="inspectionTable"> - <el-table - ref="inspectionTable" - :height="400" - :max-height="400" - :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%" - > - <el-table-column - type="selection" - width="50"> - </el-table-column> - <el-table-column - prop="number" - label="璁㈠崟鍙�" - min-width="100" - /> - <el-table-column - prop="username" - label="瀹㈡埛鍚嶇О" - min-width="80" - /> - <el-table-column - prop="projectname" - label="宸ョ▼鍚嶇О" - min-width="80" - /> - <el-table-column - prop="tracenumber" - label="璐ㄩ噺杩芥函鍙�" - min-width="108" - /> - <el-table-column - prop="code" - label="浜у搧缂栫爜" - min-width="100" - /> - <el-table-column - prop="class" - label="浜у搧澶х被" - min-width="72" - /> - <el-table-column - prop="specificationmodel" - label="瑙勬牸鍨嬪彿" - min-width="110" - /> - <el-table-column - prop="unit" - label="鍗曚綅" - min-width="50" - /> - <el-table-column - prop="quantity" - label="鏁伴噺" - min-width="50" - /> - <el-table-column - prop="machine" - label="鏈哄彴" - min-width="60" - /> - <el-table-column - prop="group" - label="鐝粍" - min-width="50" - /> - <el-table-column - prop="worker" - label="涓绘満宸�" - min-width="60" - /> - <el-table-column - prop="date" - label="妫�楠屾棩鏈�" - min-width="80" - /> - <el-table-column - prop="result" - label="妫�娴嬬粨鏋�" - min-width="80" - /> - <el-table-column - label="鎿嶄綔" - min-width="80" - > - <template slot-scope="scope"> - <el-button type="text" size="small" @click="handleClick(scope.row)">鏌ョ湅</el-button> - <el-button type="text" size="small" style="margin-left: 0;">鎵撳嵃</el-button> - </template> - </el-table-column> - </el-table> - </div> - <!-- 鍒嗛〉鍣� --> - <div class="pagination"> - <el-pagination - :current-page="currentPage" - :page-sizes="[100, 200, 300, 400]" - :page-size="pageSize" - layout="total, sizes, prev, pager, next, jumper" - :total="this.inspectionTable.length" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" + <div class="inspectionTable"> + <el-table + ref="inspectionTable" + height="calc(100vh - 320px)" + :cell-style="{ textAlign: 'center' }" + :header-cell-style="{ + border: '0px', + background: '#f5f7fa', + color: '#606266', + boxShadow: 'inset 0 1px 0 #ebeef5', + textAlign: 'center' + }" + border + :data="inspectionTable" + style="width: 100%" + > + <el-table-column type="selection" width="50"> </el-table-column> + <el-table-column + label="搴忓彿" + type="index" + width="60" + ></el-table-column> + <el-table-column + prop="order_number" + label="璁㈠崟缂栧彿" + min-width="90" /> - </div> + <el-table-column prop="material" label="浜у搧鍚嶇О" min-width="80" /> + <el-table-column + prop="specifications_model" + label="瑙勬牸鍨嬪彿" + min-width="60" + /> + <el-table-column prop="techfather" label="宸ュ簭" min-width="70" /> + <el-table-column prop="techname" label="宸ヨ壓鍚嶇О" min-width="70" /> + <el-table-column prop="unit" label="鍗曚綅" min-width="50" /> + <el-table-column prop="quantity" label="鏁伴噺" min-width="50" /> + <el-table-column + prop="createTime" + label="鎶ユ鏃ユ湡" + min-width="60" + /> + <el-table-column prop="name" label="鎶ユ浜�" min-width="50" /> + <el-table-column + prop="updateTime" + label="妫�娴嬫棩鏈�" + min-width="60" + /> + <el-table-column prop="result" label="鍚堟牸鐘舵��" min-width="80"> + <template slot-scope="scope"> + <span style="color: #34BD66;" v-if="scope.row.result == 1" + >鍚堟牸</span + > + <span style="color: #E84738;" v-else-if="scope.row.result == 0" + >涓嶅悎鏍�</span + > + </template> + </el-table-column> + <el-table-column label="鎿嶄綔" min-width="80"> + <template slot-scope="scope"> + <el-button type="text" size="small" style="margin-left: 0;" + >璇︽儏</el-button + > + <el-button + type="text" + size="small" + @click="handleClick(scope.row)" + >鏌ョ湅</el-button + > + <el-button type="text" size="small" style="margin-left: 0;" + >缂栬緫</el-button + > + </template> + </el-table-column> + </el-table> + </div> + <!-- 鍒嗛〉鍣� --> + <div class="pagination"> + <el-pagination + :current-page="1" + :page-sizes="[10, 20, 30, 40]" + :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="inspectionTableTotal" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> + </div> </div> - </div> - <div class="newPage" v-if="showAddPage"> - <!-- 鏂板椤甸潰 --> - <div class="addInspection"> - <el-row class="header"> - <el-col :span="12">鏂板杩囩▼妫�楠屽崟</el-col> - <el-col :span="12" style="text-align: right;"> - <!-- 鐐瑰嚮杩斿洖锛屽綋鍓嶉〉闈㈠�间负false --> - <el-button @click="showAddPage = false" type="primary" size="mini" icon="el-icon-back" style="background: #004EA2; ">杩斿洖</el-button> - </el-col> - </el-row> - <el-form :model="addInspectionform" ref="addInspectionform" class="addInspectionform" label-position="left" label-width="100px" size="mini" > - <div class="formwrapper"> - <el-row :gutter="450"> - <el-col :span="5"> - <el-form-item label="璁㈠崟鍙凤細"> - <el-input style="width: 180px;" v-model="addInspectionform.number" placeholder="璇疯緭鍏ヨ鍗曞彿" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="瀹㈡埛鍚嶇О锛�"> - <el-input style="width: 180px;" v-model="addInspectionform.username" placeholder="璇疯緭鍏ュ鎴峰悕绉�" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="宸ョ▼鍚嶇О锛�"> - <el-input style="width: 180px;" v-model="addInspectionform.projectname" placeholder="璇疯緭鍏ュ伐绋嬪悕绉�" autocomplete="off" /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="450"> - <el-col :span="5"> - <el-form-item label="璐ㄩ噺杩芥函鍙凤細" > - <el-input style="width: 180px;" v-model="addInspectionform.tracenumber" placeholder="璇疯緭鍏ヨ拷婧彿" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="浜у搧缂栫爜锛�"> - <el-input style="width: 180px;" v-model="addInspectionform.code" placeholder="璇疯緭鍏ヤ骇鍝佺紪鐮�" autocomplete="off" /> </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="浜у搧鍚嶇О锛�"> - <el-select style="width: 180px;" v-model="addInspectionform.class" size="small" placeholder="璇烽�夋嫨浜у搧鍚嶇О"> - <el-option value="閫夐」1"></el-option> - <el-option value="閫夐」2"></el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="450"> - <el-col :span="5"> - <el-form-item label="瑙勬牸鍨嬪彿锛�" > - <el-select style="width: 180px;" v-model="addInspectionform.specificationmodel" size="small" placeholder="璇烽�夋嫨瑙勬牸鍨嬪彿"> - <el-option value="閫夐」1"></el-option> - <el-option value="閫夐」2"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="鍗曚綅锛�" > - <el-select style="width: 180px;" v-model="addInspectionform.unit" size="small" placeholder="璇烽�夋嫨鍗曚綅"> - <el-option value="閫夐」1"></el-option> - <el-option value="閫夐」2"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="鏁伴噺锛�"> - <el-input style="width: 180px;" v-model="addInspectionform.quantity" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="450"> - <!-- <el-col :span="5"> - <el-form-item label="鐝粍锛�" > - <el-select style="width: 180px;" v-model="addInspectionform.group" size="small" placeholder="璇烽�夋嫨鐝粍"> - <el-option value="閫夐」1"></el-option> - <el-option value="閫夐」2"></el-option> - </el-select> </el-form-item> - </el-col> --> - <el-col :span="5"> - <el-form-item label="涓绘満宸ワ細" > - <el-select style="width: 180px;" v-model="addInspectionform.worker" size="small" placeholder="璇烽�夋嫨涓绘満宸�"> - <el-option value="閫夐」1"></el-option> - <el-option value="閫夐」2"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="鏈哄彴锛�" > - <el-select style="width: 180px;" v-model="addInspectionform.machine" size="small" placeholder="璇烽�夋嫨浜у搧鏈哄彴"> - <el-option value="閫夐」1"></el-option> - <el-option value="閫夐」2"></el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> - </div> - </el-form> - </div> - <div class="inspectionProject"> - <span>妫�楠岄」鐩�</span> - <el-table :data="inspectionItems"> - <el-table-column type="index" label="搴忓彿" width="60"></el-table-column> - <el-table-column prop="project" label="椤圭洰"></el-table-column> - <el-table-column prop="unit" label="鍗曚綅"></el-table-column> - <el-table-column prop="standardVal" label="鏍囧噯鍊�"></el-table-column> - <el-table-column prop="controlVal" label="鍐呮祴鍊�"></el-table-column> - <el-table-column prop="detectionVal" label="妫�楠屽��"></el-table-column> - <el-table-column label="璇曢獙璁惧"> - <template slot-scope="scope"> - {{ scope.row.device }} - <el-select v-model="scope.row.device" size="small" slot="append" style="width: 100px;"> - <el-option value="閫夐」1"></el-option> - <el-option value="閫夐」2"></el-option> - </el-select> - </template> - </el-table-column> - <el-table-column prop="conclusion" label="缁撹"> - <template slot-scope="scope"> - <span style="color: #34BD66;" v-if="scope.row.insState==1">鍚堟牸</span> - <span style="color: #E84738;" v-else-if="scope.row.insState==0">涓嶅悎鏍�</span> - </template> - </el-table-column> - </el-table> - </div> - <div class="inspectionResult"> - <span>妫�娴嬬粨鏋�</span> - <el-table :data="inspectionResultForm"> - <el-table-column prop="id" label="鐗╂枡缂栧彿"></el-table-column> - <el-table-column prop="name" label="鐗╂枡鍚嶇О"></el-table-column> - <el-table-column prop="inspecter" label="妫�楠屽憳"></el-table-column> - <el-table-column prop="conclusion" label="妫�楠岀粨璁�"></el-table-column> - <el-table-column prop="operation" label="涓婃姤"></el-table-column> - </el-table> - </div> - </div> - </div> - </template> + <div class="newPage" v-if="showAddPage"> + <!-- 鏂板椤甸潰 --> + <div class="addInspection"> + <el-row class="header"> + <el-col :span="12">鏂板杩囩▼妫�楠屽崟</el-col> + <el-col :span="12" style="text-align: right;"> + <!-- 鐐瑰嚮杩斿洖锛屽綋鍓嶉〉闈㈠�间负false --> + <el-button + type="primary" + size="mini" + style="background: #004EA2; " + icon="el-icon-circle-plus-outline" + >鏂板</el-button + > + <el-button + @click="showAddPage = false" + type="primary" + size="mini" + icon="el-icon-back" + style="background: #004EA2; " + >杩斿洖</el-button + > + </el-col> + </el-row> + <el-form + :model="addInspectionform" + ref="addInspectionform" + class="addInspectionform" + label-position="right" + label-width="120px" + size="small" + > + <div class="formwrapper"> + <el-row :gutter="230"> + <el-col :span="7"> + <el-form-item label="璁㈠崟鍙凤細"> + <el-input + style="width: 210px;" + size="small" + v-model="addInspectionform.number" + placeholder="璇疯緭鍏ヨ鍗曞彿" + /> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-form-item label="浜у搧鍚嶇О锛�"> + <el-input + style="width: 210px;" + size="small" + v-model="addInspectionform.code" + placeholder="璇疯緭鍏ヤ骇鍝佺紪鐮�" + /> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-form-item label="浜у搧缂栫爜锛�"> + <el-input + style="width: 210px;" + size="small" + disabled + v-model="addInspectionform.code" + placeholder="璇疯緭鍏ヤ骇鍝佺紪鐮�" + /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="230"> + <el-col :span="7"> + <el-form-item label="瑙勬牸鍨嬪彿锛�"> + <el-input + style="width: 210px;" + size="small" + disabled + v-model="addInspectionform.number" + placeholder="璇疯緭鍏ヨ鏍煎瀷鍙�" + /> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-form-item label="宸ュ簭鍚嶇О锛�"> + <el-select + v-model="value" + placeholder="璇烽�夋嫨" + style="width: 210px;" + size="small" + > + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-form-item label="宸ヨ壓鍚嶇О锛�"> + <el-select + v-model="value" + placeholder="璇烽�夋嫨" + style="width: 210px;" + size="small" + > + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="230"> + <el-col :span="7"> + <el-form-item label="鍗曚綅锛�"> + <el-input + style="width: 210px;" + size="small" + disabled + v-model="addInspectionform.quantity" + placeholder="璇疯緭鍏ュ崟浣�" + /> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-form-item label="鏁伴噺锛�"> + <el-input + style="width: 210px;" + size="small" + v-model="addInspectionform.quantity" + placeholder="璇疯緭鍏ユ暟閲�" + /> + </el-form-item> + </el-col> + <el-col :span="7"> + <el-button + type="primary" + style="float: right; font-size: 14px; !important" + >鐢熸垚妫�楠岄」鐩�</el-button + > + </el-col> + </el-row> + </div> + </el-form> + </div> + <div class="inspectionProject"> + <el-row> + <el-col :span="12" class="inspectionProject_span">妫�楠岄」鐩�</el-col> + <el-col :span="12" class="inspectionProject_span"> + <el-button size="mini" @click="clickDeleteInspectionColumn()" + >鍒犻櫎妫�楠屽�煎垪</el-button + > + <el-button + style="margin-right: 30px;" + size="mini" + @click="clickAddInspectionColumn()" + >娣诲姞妫�楠屽�煎垪</el-button + > + <el-button + size="mini" + style="margin-right: 30px;" + @click="clickAddLine()" + >娣诲姞妫�楠岃</el-button + > + </el-col> + </el-row> + <el-table + :data="inspectionItems" + height="calc(100vh - 550px)" + style="width: 100%" + > + <el-table-column + type="index" + label="搴忓彿" + width="60" + ></el-table-column> + <el-table-column prop="material" label="椤圭洰"></el-table-column> + <el-table-column prop="unit" label="鍗曚綅"></el-table-column> + <el-table-column prop="standardVal" label="鏍囧噯鍊�"></el-table-column> + <el-table-column prop="controlVal" label="鍐呮祴鍊�"></el-table-column> + <el-table-column + prop="testValue" + label="妫�娴嬪��" + min-width="150" + v-for="(item, index) in empiricalValueAdd" + :key="index" + > + <template slot-scope="scope"> + <el-tooltip + :disabled="scope.row.deviceId != null" + class="item" + effect="dark" + content="璇峰厛閫夋嫨璁惧锛�" + placement="top-start" + > + <el-input + :disabled="scope.row.deviceId == null" + // v-model="scope.row.testValueList[index]" + @blur="changeState(scope.row, index)" + placeholder="璇疯緭鍏ユ娴嬪��" + ></el-input> + </el-tooltip> + </template> + </el-table-column> + <el-table-column label="璇曢獙璁惧"> + <template slot-scope="scope"> + {{ scope.row.device }} + <el-select + v-model="scope.row.device" + size="small" + slot="append" + style="width: 100px;" + > + <el-option value="閫夐」1"></el-option> + <el-option value="閫夐」2"></el-option> + </el-select> + </template> + </el-table-column> + <el-table-column prop="conclusion" label="缁撹"> + <template slot-scope="scope"> + <span style="color: #34BD66;" v-if="scope.row.insState == 1" + >鍚堟牸</span + > + <span style="color: #E84738;" v-else-if="scope.row.insState == 0" + >涓嶅悎鏍�</span + > + </template> + </el-table-column> + <el-table-column v-if="detailId == null" label="鎿嶄綔" width="100"> + <template slot-scope="scope"> + <el-button type="text" @click="clickDeleteline(scope)" + >鍒犻櫎</el-button + > + </template> + </el-table-column> + </el-table> + </div> + <div class="inspectionResult"> + <span>妫�娴嬬粨鏋�</span> + <el-table :data="inspectionResultForm"> + <el-table-column prop="id" label="鐗╂枡缂栧彿"></el-table-column> + <el-table-column prop="name" label="鐗╂枡鍚嶇О"></el-table-column> + <el-table-column prop="inspecter" label="妫�楠屽憳"></el-table-column> + <el-table-column prop="conclusion" label="妫�楠岀粨璁�"></el-table-column> + <el-table-column prop="operation" label="涓婃姤"></el-table-column> + </el-table> + </div> + </div> + </div> +</template> - - <script> - export default { - data(){ - return { - inspectionResult: '', - inspectionDate: '', - inspecter: '', - inspectionTable:[{ - number: '8540395029753', - username: 'jack', - projectname: '甯冮殕杩�', - tracenumber: '826403164021', - code: 'C-982164', - class: '鎴愬搧', - specificationmodel: '8.8/15kV JLS-3.2', - unit: '鍚�', - quantity: '15', - machine: '鎷夐椄鏈�', - group: '1缁�', - worker: '榛勫皬鏄�', - date: '2023-08-01', - result: '鍚堟牸', - operation: '' - },{ - number: '2497320327652', - username: 'rose', - projectname: '甯冮殕杩�', - tracenumber: '826403164021', - code: 'C-24114', - class: '鎴愬搧', - specificationmodel: '8.6/15kV JAD-3.2', - unit: '鍚�', - quantity: '43', - machine: '鎷夐椄鏈�', - group: '1缁�', - worker: '榛勫皬鏄�', - date: '2023-08-01', - result: '鍚堟牸', - operation: '' - }], - currentPage: 1, // 褰撳墠椤电爜 - pageSize: 100, - showAddPage: false, - addInspectionform: [{ - number: '', - username: '', - projectname: '', - tracenumber: '', - code: '', - class: '', - specificationmodel: '', - unit: '', - quantity: '', - group: '', - worker: '', - machine: '' - }], - inspectionItems:[{ - project:'甯冮殕杩�', - unit:'鍚�', - standardVal: '8219384314', - controlVal:'9823401', - detectionVal:'11111', - device:'', - conclusion:'鍚堟牸' - }], - inspectionResultForm:[{ - id:'274024', - name:'111', - inspecter:'111', - conclusion:'', - operation:'' - }] - } +<script> +export default { + data() { + return { + search: { + countSize: 10, + pageSize: 1, + result: "", // 妫�娴嬬姸鎬� + name: "", // 浜у搧鍚嶇О + techfather: "" // 宸ュ簭 }, - methods:{ - // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 - handleSizeChange(val) { - console.log(`姣忛〉 ${val} 鏉) - this.currentPage = 1 - this.pageSize = val - }, - // 褰撳墠椤垫敼鍙樻椂瑙﹀彂 璺宠浆鍏朵粬椤� - handleCurrentChange(val) { - console.log(`褰撳墠椤�: ${val}`) - this.currentPage = val - }, - handleAddNew(){ - this.showAddPage=true - } + inspectionTable: [], + inspectionTableTotal: "", + // 娣诲姞鍒� + empiricalValueAdd: 1, + // 缂栬緫鏃跺瓨鍌ㄦ渶闀跨殑鍒楁暟瀛楋紝鍋氬垹闄ゅ垽鏂� + empiricalValueAddMaxNumber: 0, + showAddPage: false, + addInspectionform: [ + { + number: "", + username: "", + projectname: "", + tracenumber: "", + code: "", + class: "", + specificationmodel: "", + unit: "", + quantity: "", + group: "", + worker: "", + machine: "" + } + ], + inspectionItems: [], // 鏂板妫�楠岄」鐩〃鏍� + inspectionResultForm: [ + { + id: "274024", + name: "111", + inspecter: "111", + conclusion: "", + operation: "" + } + ], + options: [ + { + value: "閫夐」1", + label: "榛勯噾绯�" + }, + { + value: "閫夐」2", + label: "鍙岀毊濂�" + }, + { + value: "閫夐」3", + label: "铓典粩鐓�" + }, + { + value: "閫夐」4", + label: "榫欓』闈�" + }, + { + value: "閫夐」5", + label: "鍖椾含鐑ら腑" + } + ], + value: "" + }; + }, + methods: { + // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 + handleSizeChange(val) { + this.search.countSize = val; + this.defaultInitializationTable(); + }, + // 褰撳墠椤垫敼鍙樻椂瑙﹀彂 璺宠浆鍏朵粬椤� + handleCurrentChange(val) { + this.search.pageSize = val; + this.defaultInitializationTable(); + }, + // 鏄剧ず鏂板椤甸潰 + handleAddNew() { + this.showAddPage = true; + }, + // 琛ㄦ牸鍒濆鍖栨帴鍙� + defaultInitializationTable() { + this.$axios + .post(this.$api.url.selectProcessInspectsList, this.search) + .then(res => { + this.inspectionTableTotal = res.data.total; + this.inspectionTable = res.data.row; + }); + }, + // 娣诲姞琛� + clickAddLine() { + let obj = { + material: "", + materialCode: "", + orderNumber: "", + quantity: 0, + specificationsModel: "", + techfather: "", + techname: "", + technologyId: 0, + unit: "" + }; + this.inspectionItems.push(obj); + }, + // 鍒犻櫎琛� + clickDeleteline(scope) { + this.inspectionItems.splice(scope.$index, 1); + }, + // 鍒犻櫎妫�楠屽�煎垪 + clickDeleteInspectionColumn() { + if (this.empiricalValueAdd - 1 === 0) { + } else { + if (this.empiricalValueAddMaxNumber != this.empiricalValueAdd - 1) { + this.empiricalValueAdd = this.empiricalValueAdd - 1; + this.inspectionItems.forEach(i => { + i.testValueList.splice(this.empiricalValueAdd, 1); + }); + } } + }, + // 娣诲姞妫�楠屽�煎垪 + clickAddInspectionColumn() { + this.empiricalValueAdd = this.empiricalValueAdd + 1; + } + }, + created() { + this.defaultInitializationTable(); // 鍒濆鍖栬〃鏍兼暟鎹� + } +}; +</script> - } - </script> - - <style> - .title{ - padding: 12px; - - } - .nav{ - display: flex; - padding: 20px 20px; - align-items: center; - background-color: #fff; - } - .nav *{ - font-size: 14px; - } - .content-body .rawPage{ - background-color: #fff; - overflow: hidden; - } - .inspectionTable{ - padding: 20px 20px; - } - .pagination{ - float: right; - margin-right: 20px; - } - .newPage{ - overflow: hidden; - } - .header{ - padding: 12px; - } - .addInspectionform{ - background-color: #fff; - } - .addInspectionform .formwrapper{ - padding: 20px 0px; - margin-left: 100px; - } - .inspectionProject span{ - display: block; - padding: 5px 0px; - } - .inspectionProject .el-table{ - background-color: #fff; - padding: 10px 12px; - } - .inspectionResult span{ - display: block; - padding: 5px 0px; - } - .inspectionResult .el-table{ - background-color: #fff; - padding: 10px 12px; - } - </style> +<style> +.nav { + display: flex; + padding: 20px 20px; + align-items: center; + background-color: #fff; +} +.table_header { + height: calc(100vh - 550px); +} +.nav * { + font-size: 14px; +} +.content-body .rawPage { + background-color: #fff; + overflow: hidden; +} +.inspectionTable { + padding: 20px 20px; +} +.pagination { + float: right; + margin-right: 20px; +} +.newPage { + overflow: hidden; +} +.header { + padding: 12px; +} +.addInspectionform { + background-color: #fff; +} +.addInspectionform .formwrapper { + padding: 20px 0px; + margin-left: 100px; +} +.inspectionProject .el-table { + background-color: #fff; + padding: 10px 12px; +} +.inspectionResult span { + display: block; + padding: 5px 0px; +} +.inspectionResult .el-table { + background-color: #fff; + padding: 10px 12px; +} +.inspectionProject_span { + line-height: 32px; + padding: 10px 20px; +} +.inspectionProject_span .el-button { + float: right; + font-size: 13px !important; +} +</style> diff --git a/src/components/view/raw-ins.vue b/src/components/view/raw-ins.vue index d359349..1d5b2e3 100644 --- a/src/components/view/raw-ins.vue +++ b/src/components/view/raw-ins.vue @@ -106,8 +106,8 @@ <span>鍘熸潗鏂欑紪鐮侊細</span> <el-input v-model="search.code" - size="small" placeholder="璇疯緭鍏�" + size="small" style="width: 224px;margin-right: 30px;" clearable ></el-input> diff --git a/src/components/view/rawInsDetail.vue b/src/components/view/rawInsDetail.vue index 9f5a5d6..2ab34d0 100644 --- a/src/components/view/rawInsDetail.vue +++ b/src/components/view/rawInsDetail.vue @@ -118,7 +118,7 @@ <el-col :span="7"> <el-form-item label="渚涘簲鍟嗗悕绉�:"> <el-input - :placeholder="detailId !== null ? '' : '璇疯緭鍏ユ楠屾暟閲�'" + :placeholder="detailId !== null ? '' : '璇疯緭鍏ヤ緵搴斿晢鍚嶇О'" :disabled="detailId !== null" v-model="detailInfo.supplier" ></el-input> @@ -274,7 +274,7 @@ <el-table :data="conclusionTable" style="100%"> <el-table-column prop="code" label="鐗╂枡缂栧彿"> </el-table-column> <el-table-column prop="name" label="鐗╂枡鍚嶇О"> </el-table-column> - <el-table-column prop="uName" label="妫�楠屽憳"> + <el-table-column v-if="detailId != null" prop="uName" label="妫�楠屽憳"> <template slot-scope="scope"> <span v-for="item in scope.row.uName" @@ -439,7 +439,11 @@ this.projectTable = res.data.children; this.projectTable.forEach(i => { // 瑙e喅閲嶆柊璧嬪�兼棤娉曠紪杈戞搷浣� - this.$set(i, "testValueList", i.testValue.split(",")); + if (i.testValue == null) { + this.$set(i, "testValueList", []); + } else { + this.$set(i, "testValueList", i.testValue.split(",")); + } // 鍙栨渶闀跨殑鍒楄〃鏁� if (i.testValueList.length > this.empiricalValueAdd) { this.empiricalValueAdd = i.testValueList.length; diff --git a/src/components/view/rawUnqualified/raw.vue b/src/components/view/rawUnqualified/raw.vue index a92a38f..cf5aa02 100644 --- a/src/components/view/rawUnqualified/raw.vue +++ b/src/components/view/rawUnqualified/raw.vue @@ -86,7 +86,7 @@ > </el-table-column> <el-table-column prop="code" label="鏉愭枡缂栫爜"> </el-table-column> - <el-table-column prop="id" label="鏉愭枡鍚嶇О"> </el-table-column> + <el-table-column prop="name" label="鏉愭枡鍚嶇О"> </el-table-column> <el-table-column prop="specifications" label="瑙勬牸鍨嬪彿"> </el-table-column> <el-table-column prop="unit" label="鍗曚綅"> </el-table-column> @@ -108,25 +108,61 @@ </el-table-column> <el-table-column prop="deal_reasult" label="澶勭悊缁撴灉" width="100"> <template slot-scope="scope"> - <span style="color:#34BD66;" v-if="scope.row.deal_reasult == 1" + <span style="color:#E84738;" v-if="scope.row.deal_reasult == 0" >涓嶉�氳繃</span > <span - style="color:#E84738;" - v-else-if="scope.row.deal_reasult == 0" + style="color:#34BD66;" + v-else-if="scope.row.deal_reasult == 1" >閫氳繃</span > </template> </el-table-column> <el-table-column label="鎿嶄綔" width="100"> - <template> + <template slot-scope="scope"> <div style="display: flex;"> - <el-button type="text" siae="small" size="mini">璇勫</el-button> + <el-popover + placement="left" + width="160" + :ref="`popover-${scope.$index}`" + > + <div style="padding: 6px">璇勫鏄惁閫氳繃锛�</div> + <div style="text-align: right; margin: 6px;"> + <el-button + size="mini" + type="text" + style="color: #E84738;" + @click=" + scope._self.$refs[`popover-${scope.$index}`].doClose(); + rawEvaluate(scope.row, 0); + " + >涓嶉�氳繃</el-button + > + <el-button + type="text" + style="color: #34bd66;" + size="mini" + @click=" + scope._self.$refs[`popover-${scope.$index}`].doClose(); + rawEvaluate(scope.row, 1); + " + >閫氳繃</el-button + > + </div> + <el-button + slot="reference" + type="text" + siae="small" + size="mini" + >璇勫</el-button + > + </el-popover> + <el-button type="text" siae="small" size="mini" - style=" color:87, 138, 193 ;" + style=" color:87, 138, 193 ; margin-left: 10px;" >鏌ョ湅</el-button > </div> @@ -165,7 +201,8 @@ supplier: "" // 渚涘簲鍟� }, unqualifiedTable: [], // 椤甸潰琛ㄦ牸鏁版嵁 - total: 0 + total: 0, + visible: false }; }, mounted() { @@ -200,6 +237,17 @@ supplier: "" // 渚涘簲鍟� }; this.getDetailInfo(); + }, + rawEvaluate(row, passOrNo) { + this.$axios + .post(this.$api.url.evaluatePassOrNo, { + rawId: row.id, + passOrNo: passOrNo + }) + .then(res => { + this.unqualifiedTable = []; + this.getDetailInfo(); + }); } } }; diff --git a/src/components/view/standard-box/bomClickAdd.vue b/src/components/view/standard-box/bomClickAdd.vue new file mode 100644 index 0000000..a8f9b6d --- /dev/null +++ b/src/components/view/standard-box/bomClickAdd.vue @@ -0,0 +1,15 @@ +<template> + <div> + 1 + </div> +</template> + +<script> +export default { + +} +</script> + +<style> + +</style> \ No newline at end of file diff --git a/src/components/view/standard-table/material.vue b/src/components/view/standard-table/material.vue index d4d1d4d..66e3416 100644 --- a/src/components/view/standard-table/material.vue +++ b/src/components/view/standard-table/material.vue @@ -1,38 +1,39 @@ <template> <div class="standard"> <div> - <el-table :data="tableData" style="width: 100%;margin-bottom: 20px;" row-key="name" border - @selection-change="handleSelectionChange" default-expand-all + <el-table :data="tableData" max-height="675" row-key="rowId" border + @select-all="selectAll" @select="selectTr" ref="multipleTable" + @selection-change="handleSelectionChange" default-expand-all :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"> <el-table-column type="selection" width="55"> </el-table-column> - <el-table-column type="index" width="50" label="搴忓彿"> + <el-table-column type="index" width="60" label="搴忓彿"> </el-table-column> <el-table-column prop="father" label="宸ュ簭" sortable width="200px"> <template slot-scope="scope"> - <el-tag v-if="scope.row.children" :type="scope.row.children ? 'primary' : 'success'"> - <div class="firstDiv" :style="{ color: scope.row.children ? '#16a7ff' : '#58c173' }"> - 01 - </div> - </el-tag> - <span style="color: black"> - {{ scope.row.father }} - </span> + <el-tag v-if="scope.row.father != null" type="primary">01</el-tag> + <span style="color: #000000"> + {{ scope.row.father }} + </span> </template> </el-table-column> - <el-table-column prop="tanme" sortable label="宸ヨ壓鍚嶇О"> - <!-- <template slot-scope="scope"> - <el-tag v-if="!scope.row.children"> - <div class="firstDiv" :style="`color: ${scope.row.children? '#16a7ff' : '#58c173'}`"> - 02 - </div> - </el-tag> - <span style="color: black"> - {{ scope.row.tname }} - </span> - </template> --> + <el-table-column prop="tname" sortable label="宸ヨ壓鍚嶇О"> + <template slot-scope="scope"> + <el-tag type="success" v-if="scope.row.tname != null">02</el-tag> + <span style="color: #000000"> + {{ scope.row.tname }} + </span> + </template> </el-table-column> <el-table-column prop="mname" label="鏉愭枡鍚嶇О"> + <template slot-scope="scope"> + <el-tag type="info" color="#faf2ff" v-if="scope.row.mname != null"> + <span style="color: #e1affb">03</span> + </el-tag> + <span> + {{scope.row.mname}} + </span> + </template> </el-table-column> <el-table-column prop="specifications" label="瑙勬牸"> </el-table-column> @@ -49,20 +50,59 @@ export default { data() { return { + hasChildren:true, selects: [] } }, props:['tableData','tableType'], - created() { - console.log(this.tableData,this.tableType) - }, - mounted() { - - }, + created() {}, + mounted() {}, methods: { + // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 + // 鍏ㄩ��/鍙栨秷閫夋搷浣� + selectAll(val) { + this.isAllSelect = !this.isAllSelect; + let data = this.tableData; + this.toggleSelect(data, this.isAllSelect, "all"); + }, + //閫夋嫨鏌愯 + selectTr(selection, row) { + this.$set(row, "isChecked", !row.isChecked); + this.$nextTick(() => { + this.isAllSelect = row.isChecked; + this.toggleSelect(row, row.isChecked, "tr"); + }); + }, + //閫掑綊瀛愮骇 + toggleSelect(data, flag, type) { + if (type === "all") { + if (data.length > 0) { + data.forEach((item) => { + this.toggleSelection(item, flag); + if (item.children && item.children.length > 0) { + this.toggleSelect(item.children, flag, type); + } + }); + } + } else { + if (data.children && data.children.length > 0) { + data.children.forEach((item) => { + item.isChecked = !item.isChecked; + this.$refs.multipleTable.toggleRowSelection(item, flag); + this.toggleSelect(item, flag, type); + }); + } + } + }, handleSelectionChange(val) { - this.selects = val; - } + this.deleteList = []; + val.forEach((v) => { + if (v.id !== undefined) { + this.deleteList.push(v.id); + } + }); + }, + // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 缁撴潫 } } </script> diff --git a/src/components/view/standard-table/product.vue b/src/components/view/standard-table/product.vue new file mode 100644 index 0000000..80f18e1 --- /dev/null +++ b/src/components/view/standard-table/product.vue @@ -0,0 +1,130 @@ +<style scoped> + .standard { + width: 100%; + height: 100%; + } + .standard * { + font-size: 14px; + } + + .standard .has-gutter .el-table__cell { + background-color: #F0F1F5 !important; + color: #333; + } + + .standard .has-gutter .el-table__cell .cell { + font-size: 16px; + font-weight: 500; + } + + .standard .cell { + color: #333; + padding-left: 17px !important; + } + + .standard { + width: 100%; + height: 100%; + overflow: auto; + } + + /* .standard .el-table__body-wrapper { + height: 100%; + } */ + + /* .standard .el-table__body { + height: 100%; + } */ + .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ + padding-left: 23px !important; + } +</style> +<template> + <div class="standard"> + <el-table ref="multipleTable" :data="tableData" row-key="rowId" border max-height="675" + @select-all="selectAll" @select="selectTr" + @selection-change="handleSelectionChange" default-expand-all + :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> + <el-table-column type="selection" width="55"></el-table-column> + <el-table-column type="index" width="60" label="搴忓彿"></el-table-column> + <el-table-column prop="father" label="宸ュ簭"> + <template slot-scope="scope"> + <el-tag type="primary" v-if="scope.row.father != null">01</el-tag> + <span>{{scope.row.father}}</span> + </template> + </el-table-column> + <el-table-column prop="name" label="宸ヨ壓鍚嶇О"> + <template slot-scope="scope"> + <el-tag type="success" v-if="scope.row.name != null">02</el-tag> + <span>{{scope.row.name}}</span> + </template> + </el-table-column> + <el-table-column prop="device" label="璁惧鍚嶇О"> + <template slot-scope="scope"> + <el-tag type="info" color="#faf2ff" v-if="scope.row.device != null"> + <span style="color: #e1affb">03</span> + </el-tag> + <span>{{scope.row.device}}</span> + </template> + </el-table-column> + <el-table-column prop="productFather" label="椤圭洰"></el-table-column> + <el-table-column prop="unit" label="鍗曚綅"></el-table-column> + <el-table-column prop="product" label="鎸囨爣"></el-table-column> + </el-table> + </div> +</template> +<script> +export default ({ + data() { + + }, + props:['tableData','tableType'], + methods:{ + // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 + // 鍏ㄩ��/鍙栨秷閫夋搷浣� + selectAll(val) { + this.isAllSelect = !this.isAllSelect; + let data = this.tableData; + this.toggleSelect(data, this.isAllSelect, "all"); + }, + //閫夋嫨鏌愯 + selectTr(selection, row) { + this.$set(row, "isChecked", !row.isChecked); + this.$nextTick(() => { + this.isAllSelect = row.isChecked; + this.toggleSelect(row, row.isChecked, "tr"); + }); + }, + //閫掑綊瀛愮骇 + toggleSelect(data, flag, type) { + if (type === "all") { + if (data.length > 0) { + data.forEach((item) => { + this.toggleSelection(item, flag); + if (item.children && item.children.length > 0) { + this.toggleSelect(item.children, flag, type); + } + }); + } + } else { + if (data.children && data.children.length > 0) { + data.children.forEach((item) => { + item.isChecked = !item.isChecked; + this.$refs.multipleTable.toggleRowSelection(item, flag); + this.toggleSelect(item, flag, type); + }); + } + } + }, + handleSelectionChange(val) { + this.deleteList = []; + val.forEach((v) => { + if (v.id !== undefined) { + this.deleteList.push(v.id); + } + }); + }, + // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 缁撴潫 + } +}) +</script> diff --git a/src/components/view/standard-table/target.vue b/src/components/view/standard-table/target.vue new file mode 100644 index 0000000..f07c292 --- /dev/null +++ b/src/components/view/standard-table/target.vue @@ -0,0 +1,171 @@ +<template> + <div class="standard"> + <div> + <el-table ref="multipleTable" :data="tableData" row-key="rowId" border max-height="675" + @select-all="selectAll" @select="selectTr" + @selection-change="handleSelectionChange" default-expand-all + :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> + <el-table-column type="selection" width="55"></el-table-column> + <el-table-column type="index" width="60" label="搴忓彿"></el-table-column> + <el-table-column prop="tfather" label="宸ュ簭"> + <template slot-scope="scope"> + <el-tag type="primary" v-if="scope.row.tfather != null">01</el-tag> + <span>{{scope.row.tfather}}</span> + </template> + </el-table-column> + <el-table-column prop="tname" label="宸ヨ壓鍚嶇О"> + <template slot-scope="scope"> + <el-tag type="success" v-if="scope.row.tname != null">02</el-tag> + <span>{{scope.row.tname}}</span> + </template> + </el-table-column> + <el-table-column prop="pname" label="鎸囨爣鍚嶇О"> + <template slot-scope="scope"> + <el-tag type="info" color="#faf2ff" v-if="scope.row.pname != null"> + <span style="color: #e1affb">03</span> + </el-tag> + <span>{{scope.row.pname}}</span> + </template> + </el-table-column> + <el-table-column prop="unit" label="鍗曚綅"></el-table-column> + <el-table-column prop="internal" label="鍐呮帶鍊�"> + <template slot-scope="scope"> + <el-input v-model="scope.row.internal" + v-if="scope.row.internal != null" + @blur="updateVal(scope.row)"></el-input> + </template> + </el-table-column> + <el-table-column prop="required" label="鏍囧噯鍊�"> + <template slot-scope="scope"> + <el-input v-model="scope.row.required" + v-if="scope.row.required != null" + @blur="updateVal(scope.row)"></el-input> + </template> + </el-table-column> + </el-table> + </div> + </div> + </template> + + <script> + export default { + data() { + return { + selects: [], + } + }, + props:['tableData','tableType'], + created() {}, + mounted() {}, + methods: { + // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 + // 鍏ㄩ��/鍙栨秷閫夋搷浣� + selectAll(val) { + this.isAllSelect = !this.isAllSelect; + let data = this.tableData; + this.toggleSelect(data, this.isAllSelect, "all"); + }, + //閫夋嫨鏌愯 + selectTr(selection, row) { + this.$set(row, "isChecked", !row.isChecked); + this.$nextTick(() => { + this.isAllSelect = row.isChecked; + this.toggleSelect(row, row.isChecked, "tr"); + }); + }, + //閫掑綊瀛愮骇 + toggleSelect(data, flag, type) { + if (type === "all") { + if (data.length > 0) { + data.forEach((item) => { + this.toggleSelection(item, flag); + if (item.children && item.children.length > 0) { + this.toggleSelect(item.children, flag, type); + } + }); + } + } else { + if (data.children && data.children.length > 0) { + data.children.forEach((item) => { + item.isChecked = !item.isChecked; + this.$refs.multipleTable.toggleRowSelection(item, flag); + this.toggleSelect(item, flag, type); + }); + } + } + }, + handleSelectionChange(val) { + this.deleteList = []; + val.forEach((v) => { + if (v.id !== undefined) { + this.deleteList.push(v.id); + } + }); + }, + // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 缁撴潫 + updateVal(row){ + this.$axios.post(this.$api.url.productWrite,{ + id : row.pid, + internal : row.internal, + required : row.required + }).then(res=>{ + this.$message.success(res.message); + }).catch(error=>{ + this.$message.error(error.message); + }) + }, + handleSelectionChange(val) { + this.selects = val; + }, + } + } + </script> + + <style scoped> + .expand-button { + cursor: pointer; + color: #1890ff; + } + .standard { + width: 100%; + height: 100%; + } + </style> + <style> + .standard * { + font-size: 14px; + } + + .standard .has-gutter .el-table__cell { + background-color: #F0F1F5 !important; + color: #333; + } + + .standard .has-gutter .el-table__cell .cell { + font-size: 16px; + font-weight: 500; + } + + .standard .cell { + color: #333; + padding-left: 17px !important; + } + + .standard { + width: 100%; + height: 100%; + overflow: auto; + } + + /* .standard .el-table__body-wrapper { + height: 100%; + } */ + + /* .standard .el-table__body { + height: 100%; + } */ + .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ + padding-left: 23px !important; + } + </style> + \ No newline at end of file diff --git a/src/components/view/standard-table/technology.vue b/src/components/view/standard-table/technology.vue index 835a583..cffdb58 100644 --- a/src/components/view/standard-table/technology.vue +++ b/src/components/view/standard-table/technology.vue @@ -1,46 +1,57 @@ <template> <div class="standard"> <div> - <el-table :data="tableData" style="width: 100%;margin-bottom: 20px;" row-key="name" border + <el-table :data="tableData" max-height="675" row-key="rowId" border + @select-all="selectAll" @select="selectTr" ref="multipleTable" + :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'left'}" @selection-change="handleSelectionChange" default-expand-all :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"> <el-table-column type="selection" width="55"> </el-table-column> - <el-table-column type="index" width="50" label="搴忓彿"> + <el-table-column type="index" width="60" label="搴忓彿"> </el-table-column> <el-table-column prop="father" label="宸ュ簭" sortable width="200px"> <template slot-scope="scope"> - <el-tag v-if="scope.row.children" :type="scope.row.children ? 'primary' : 'success'"> - <div class="firstDiv" :style="{ color: scope.row.children ? '#16a7ff' : '#58c173' }"> - 01 - </div> - </el-tag> + <el-tag v-if="scope.row.children" type="primary">01</el-tag> <span style="color: black"> {{ scope.row.father }} </span> </template> </el-table-column> - <el-table-column prop="name" sortable label="宸ヨ壓鍚嶇О"> + <el-table-column sortable label="宸ヨ壓鍚嶇О"> <template slot-scope="scope"> - <el-tag v-if="!scope.row.children"> - <div class="firstDiv" :style="`color: ${scope.row.children? '#16a7ff' : '#58c173'}`"> - 02 - </div> - </el-tag> - <span style="color: black"> - {{ scope.row.name }} - </span> - </template> + <el-tag type="success" v-if="!scope.row.children">02</el-tag> + <span style="color: black">{{ scope.row.name }}</span> + </template> </el-table-column> <el-table-column prop="dg" label="璁惧缁�"> + <template slot-scope="scope"> + <div class="showDiv"> + <span>{{scope.row.dg}}</span> + <div @click="showDialog">閫夋嫨</div> + </div> + </template> </el-table-column> - <el-table-column prop="pq" label="鐢熶骇瀹氶"> - </el-table-column> - <el-table-column prop="" label="鎿嶄綔"> - <el-butten style="color: rgb(137, 137, 229);">缂栬緫</el-butten> + <el-table-column prop="pq" label="鐢熶骇瀹氶(涓�/澶�)"> + <template slot-scope="scope"> + <el-input v-model="scope.row.pq" + v-if="scope.row.pq != null" + @blur="updatePq(scope.row)" + ></el-input> + </template> </el-table-column> </el-table> </div> + <el-dialog + title="閫夋嫨璁惧缁�" + :visible.sync="deviceGroupDialog" + width="30%"> + <span>杩欐槸涓�娈典俊鎭�</span> + <span slot="footer" class="dialog-footer"> + <el-button type="primary" @click="deviceGroupDialog = false">纭� 瀹�</el-button> + <el-button @click="deviceGroupDialog = false">鍙� 娑�</el-button> + </span> + </el-dialog> </div> </template> @@ -48,20 +59,77 @@ export default { data() { return { - selects: [] + deviceGroupDialog:false, + selects: [], + isAllSelect:false, } }, props:['tableData','tableType'], created() { - console.log(this.tableData,this.tableType) + console.log(this.tableData) }, mounted() { }, methods: { + // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 + // 鍏ㄩ��/鍙栨秷閫夋搷浣� + selectAll(val) { + this.isAllSelect = !this.isAllSelect; + let data = this.tableData; + this.toggleSelect(data, this.isAllSelect, "all"); + }, + //閫夋嫨鏌愯 + selectTr(selection, row) { + this.$set(row, "isChecked", !row.isChecked); + this.$nextTick(() => { + this.isAllSelect = row.isChecked; + this.toggleSelect(row, row.isChecked, "tr"); + }); + }, + //閫掑綊瀛愮骇 + toggleSelect(data, flag, type) { + if (type === "all") { + if (data.length > 0) { + data.forEach((item) => { + this.toggleSelection(item, flag); + if (item.children && item.children.length > 0) { + this.toggleSelect(item.children, flag, type); + } + }); + } + } else { + if (data.children && data.children.length > 0) { + data.children.forEach((item) => { + item.isChecked = !item.isChecked; + this.$refs.multipleTable.toggleRowSelection(item, flag); + this.toggleSelect(item, flag, type); + }); + } + } + }, handleSelectionChange(val) { - this.selects = val; - } + this.deleteList = []; + val.forEach((v) => { + if (v.id !== undefined) { + this.deleteList.push(v.id); + } + }); + }, + // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 缁撴潫 + showDialog(){ + this.deviceGroupDialog = true + }, + updatePq(row){ + this.$axios.post(this.$api.url.technologyWrite,{ + id : row.id, + productionQuota : row.pq + }).then(res=>{ + this.$message.success(res.message); + }).catch(error=>{ + this.$message.error(error.message); + }) + }, } } </script> @@ -70,6 +138,24 @@ .standard { width: 100%; height: 100%; + } + .standard .showDiv{ + cursor: pointer; + } + .standard .showDiv div{ + color:#407ab9; + display: none; + } + .showDiv span{ + cursor: pointer; + display: block; + width: 100%; + } + .showDiv:hover span{ + display: none; + } + .showDiv:hover div{ + display: block; } </style> <style> @@ -98,13 +184,13 @@ overflow: auto; } - .standard .el-table__body-wrapper { + /* .standard .el-table__body-wrapper { height: 100%; - } + } */ - .standard .el-table__body { + /* .standard .el-table__body { height: 100%; - } + } */ .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ padding-left: 23px !important; } diff --git a/src/components/view/standard.vue b/src/components/view/standard.vue index 0923393..56f6ba2 100644 --- a/src/components/view/standard.vue +++ b/src/components/view/standard.vue @@ -5,22 +5,28 @@ <el-col :span="12" style="line-height: 32px;">鏍囧噯BOM</el-col> <el-col :span="12" style="text-align: right;"> <el-button type="primary" icon="el-icon-plus" style="background: #004EA2;" - @click="bomAddModelVisible = true">鏂板</el-button> + @click="showBomAddModel">鏂板</el-button> <el-button icon="el-icon-plus">鏂板鐗堟湰</el-button> - <el-button icon="el-icon-edit-outline">淇敼</el-button> - <el-button icon="el-icon-delete">鍒犻櫎</el-button> + <el-button @click="bomRightUp=true" icon="el-icon-edit-outline">淇敼</el-button> + <el-button @click="bomRightDl=true" icon="el-icon-delete">鍒犻櫎</el-button> </el-col> </el-row> </div> <div class="thing"> <div class="left"> - <el-input v-model="search" suffix-icon="el-icon-search" placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" size="small" clearable></el-input> - - <el-tree :data="list" ref="tree" default-expand-all :props="{ children: 'children', label: 'name' }" + <el-row> + <el-col :span="21"> + <el-input v-model="search" suffix-icon="el-icon-search" placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" size="small" clearable></el-input> + </el-col> + <el-col :span="2"> + <el-button size="mini" icon="el-icon-plus" @click="bomLeftAdd=true"></el-button> + </el-col> + </el-row> + <el-tree style="width: ;" :data="list" ref="tree" default-expand-all :props="{ children: 'children', label: 'name' }" node-key="id" :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current> <div class="custom-tree-node" slot-scope="{ node, data }"> <span><i :class="`node_i ${data.code != '[5]' ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i> - {{ data.name }}</span> + {{ data.code }}{{ data.name }}</span> <el-button type="text" size="mini" @click.stop="remove(node, data)"> <i class="el-icon-delete"></i> </el-button> @@ -43,11 +49,11 @@ <el-input v-model="searchName" size="small" placeholder="璇疯緭鍏�" style="width: 224px;margin-right: 24px;" clearable></el-input> <span>{{ tableType == 1 ? '鐗堟湰锛�' : '鐗堟湰锛�' }}</span> - <el-select v-model="VER" @change="verevent" style="width: 280px;" placeholder="璇烽�夋嫨"> + <el-select size="small" v-model="VER" @change="verevent" style="width: 280px;" placeholder="璇烽�夋嫨"> <el-option v-for="item in version" :key="item" :label="item" :value="item"> </el-option> </el-select> - <el-button size="mini" @click="() => { searchName = ''; selectProductTableData() }"><span>閲� 缃�</span></el-button> + <el-button style="margin-left:10px;" size="mini" @click="() => { searchName = ''; selectProductTableData() }"><span>閲� 缃�</span></el-button> <el-button size="mini" type="primary" style="background: #004EA2;" @click="selectProductTableData"><span>鏌� 璇�</span></el-button> </div> @@ -56,32 +62,207 @@ <technology :tableType="tableType" :tableData="tableData"></technology> </div> <div v-if="this.typeselect == 1"> - 鎶�鏈寚鏍� + <target :tableType="tableType" :tableData="tableData"></target> </div> <div v-if="this.typeselect == 2"> - <material :tableType="tableType" :tableData="tableData"></material> + <material :tableType="tableType" :tableData="tableData"></material> </div> <div v-if="this.typeselect == 3"> - 鐢熶骇宸ヨ壓 + <product :tableType="tableType" :tableData="tableData"></product> </div> - <!-- <div class="table"> - <technology v-if="tableData.length !== 0" :tableType="tableType" :tableData="tableData"></technology> - </div> --> - <!-- <div class="table"> - <technology v-if="tableData.length !== 0" :tableType="tableType" :tableData="tableData"></technology> - </div> --> + </div> </div> <div class="bom-add-model"> - <el-dialog title="BOM鏂板" :visible.sync="bomAddModelVisible" width="30%"> - <el-form> - - </el-form> + <el-dialog title="BOM鏂板" :visible.sync="bomAddModelVisible" width="35%"> + <!-- 宸ヨ壓璺嚎 --> + <div v-if="typeselect == 0">銆� + <el-form :model="technologyForm" :inline="true" class="demo-form-inline" label-position="right" + :rules="boomRules" ref="boomForm" label-width="90px"> + <el-form-item label="宸ュ簭:" prop="father" width="250"> + <el-select v-model="technologyForm.father" + style="width:200px;" placeholder="璇疯緭鍏ユ垨閫夋嫨宸ュ簭"> + <el-option :value="item.father" :label="item.father" v-for="(item,index) in fatherList" :key="index"></el-option> + </el-select> + </el-form-item> + <el-form-item label="宸ヨ壓鍚嶇О:" prop="name" width="250"> + <el-input placeholder="璇疯緭鍏ュ伐鑹哄悕绉�" style="width:200px;" + v-model="technologyForm.name"></el-input> + </el-form-item> + <el-form-item label="璁惧缁�:" prop="deviceGroup" width="250"> + <el-select placeholder="璇烽�夋嫨璁惧缁�" + style="width:200px;" + v-model="technologyForm.deviceGroup"> + <el-option :value="item.father" + v-for="(item,index) in deviceList" :key="index" :label="item.father"></el-option> + </el-select> + </el-form-item> + <el-form-item label="鐢熶骇瀹氶:" prop="productionQuota" width="250"> + <el-input style="width:200px;" v-model.number="technologyForm.productionQuota" placeholder="璇疯緭鍏ョ敓浜у畾棰�" /> + </el-form-item> + </el-form> + </div> + <!-- 鎶�鏈寚鏍� --> + <div v-if="typeselect == 1"> + <el-form :model="targetForm" :inline="true" class="demo-form-inline" label-position="right" + label-width="80px"> + <el-form-item label="鎸囨爣鍚嶇О:" prop="father" width="250"> + <el-input style="width:200px;" v-model="targetForm.pname" placeholder="璇疯緭鍏ュ崟浣�"/> + </el-form-item> + <el-form-item label="鍗曚綅:" prop="name" width="250"> + <el-input style="width:200px;" v-model="targetForm.unit" placeholder="璇疯緭鍏ュ崟浣�"/> + </el-form-item> + <el-form-item label="鍐呮帶鍊�:" prop="dg" width="250"> + <el-input style="width:200px;" v-model="targetForm.internal" placeholder="璇疯緭鍏ュ崟浣�"/> + </el-form-item> + <el-form-item label="鏍囧噯鍊�:" prop="unit" width="250"> + <el-input style="width:200px;" v-model="targetForm.required" placeholder="璇疯緭鍏ュ崟浣�"/> + </el-form-item> + </el-form> + </div> + <!-- 鐗╂枡娓呭崟 --> + <div v-if="typeselect == 2"> + <el-form :model="materialForm" class="demo-form-inline" label-position="right" + label-width="80px"> + <el-row> + <el-col :span="12"> + <el-form-item label="瑙勬牸鍨嬪彿:" prop="father" width="250"> + <el-input style="width:200px;" v-model="materialForm.pname" placeholder="璇疯緭鍏ュ崟浣�"/> + </el-form-item> + </el-col> + <el-col :span="12" style="text-align: right;"> + <el-form-item label="浜у搧澶х被:" prop="name" width="250"> + <el-select placeholder="璇烽�夋嫨浜у搧澶х被" + style="width:240px;" v-model="materialForm.dg"> + <el-option value="1">1</el-option> + <el-option value="2">2</el-option> + <el-option value="3">3</el-option> + <el-option value="4">4</el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="鏉愭枡淇℃伅"></el-form-item> + </el-col> + <el-col :span="12" style="text-align: right;"> + <el-button size="mini" style="text-align: right;">娣诲姞琛�</el-button> + </el-col> + </el-row> + <el-row> + <el-col :span="24"> + <el-table > + <el-table-column label="鏉愭枡鍚嶇О"></el-table-column> + <el-table-column label="瑙勬牸鍨嬪彿"></el-table-column> + <el-table-column label="鍗曚綅"></el-table-column> + <el-table-column label="鏁伴噺"></el-table-column> + </el-table> + </el-col> + </el-row> + </el-form> + </div> + <!-- 鐢熶骇宸ヨ壓 --> + <div v-if="typeselect == 3"> + <el-form :model="technologyForm" :inline="true" class="demo-form-inline" label-position="right" + label-width="80px"> + <el-form-item label="宸ュ簭:" prop="father" width="250"> + <el-select v-model="technologyForm.father" + style="width:200px;" + placeholder="璇疯緭鍏ユ垨閫夋嫨鐢熶骇瀹氶"> + <el-option value="1">1</el-option> + <el-option value="2">2</el-option> + <el-option value="3">3</el-option> + <el-option value="4">4</el-option> + </el-select> + </el-form-item> + <el-form-item label="宸ヨ壓鍚嶇О:" prop="name" width="250"> + <el-select placeholder="璇疯緭鍏ユ垨閫夋嫨宸ヨ壓鍚嶇О" + style="width:200px;" + v-model="technologyForm.name"> + <el-option value="1">1</el-option> + <el-option value="2">2</el-option> + <el-option value="3">3</el-option> + <el-option value="4">4</el-option> + </el-select> + </el-form-item> + <el-form-item label="璁惧:" prop="dg" width="250"> + <el-select placeholder="璇烽�夋嫨璁惧" + style="width:200px;" + v-model="technologyForm.dg"> + <el-option value="1">1</el-option> + <el-option value="2">2</el-option> + <el-option value="3">3</el-option> + <el-option value="4">4</el-option> + </el-select> + </el-form-item> + <el-form-item label="椤圭洰:" prop="dg" width="250"> + <el-select placeholder="璇烽�夋嫨椤圭洰" + style="width:200px;" + v-model="technologyForm.dg"> + <el-option value="1">1</el-option> + <el-option value="2">2</el-option> + <el-option value="3">3</el-option> + <el-option value="4">4</el-option> + </el-select> + </el-form-item> + <el-form-item label="鍗曚綅:" prop="unit" width="250"> + <el-input style="width:200px;" v-model="technologyForm.unit" placeholder="璇疯緭鍏ュ崟浣�"/> + </el-form-item> + <el-form-item label="鎸囨爣:" prop="pq" width="250"> + <el-input style="width:200px;" v-model="technologyForm.pq" placeholder="璇疯緭鍏ユ寚鏍�" /> + </el-form-item> + </el-form> + </div> <span slot="footer" class="dialog-footer"> <el-button @click="bomAddModelVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="bomAddModelVisible = false">纭� 瀹�</el-button> + <el-button type="primary" @click="confirmAdd('boomForm')">纭� 瀹�</el-button> + </span> + </el-dialog> + <!-- 宸︿晶鐐瑰嚮+鎸夐挳 --> + <el-dialog title="BOM鏂板" :visible.sync="bomLeftAdd" width="29%"> + <el-form ref="leftAdd" :model="leftAdd"> + <el-form-item :rules="[{ required: true, message: '璇烽�夋嫨浜у搧绫诲瀷', trigger: 'blur' }]" label="浜у搧绫诲瀷" prop="type"> + <el-cascader @change="changeLeftAdd" v-model="leftAdd.type" style="width: 86%;" :options="formTypeOptions" :props="{ checkStrictly: true }" clearable></el-cascader> + </el-form-item> + <el-form-item v-if="leftAdd.type.length<2" label="浜у搧澶х被" prop="father"> + <el-autocomplete class="inline-input" style="width: 88%;" v-model="leftAdd.father" :fetch-suggestions="querySearch" placeholder="璇烽�夋嫨浜у搧澶х被" @select="handleSelect"></el-autocomplete> + </el-form-item> + <el-form-item v-if="leftAdd.type.length<3" label="浜у搧鍚嶇О" prop="name"> + <el-autocomplete class="inline-input" style="width: 88%;" v-model="leftAdd.name" :fetch-suggestions="querySearchName" placeholder="璇烽�夋嫨浜у搧鍚嶇О" @select="handleSelect"></el-autocomplete> + </el-form-item> + <el-form-item v-if="leftAdd.type.length<4" label="浜у搧鏍囧噯" prop="standard"> + <el-autocomplete class="inline-input" style="width: 88%;" v-model="leftAdd.standard" :fetch-suggestions="querySearchStandar" placeholder="璇烽�夋嫨浜у搧鏍囧噯" @select="handleSelect"></el-autocomplete> + </el-form-item> + <el-form-item label="浜у搧鍨嬪彿" prop="specifications"> + <el-input v-model="leftAdd.specifications" style="width: 88%;" placeholder="璇疯緭鍏ヤ骇鍝佸瀷鍙�"></el-input> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="resetForm('leftAdd')">鍙� 娑�</el-button> + <el-button type="primary" @click="submitForm('leftAdd')">纭� 瀹�</el-button> + </span> + </el-dialog> + <!-- 鍙充笂渚х偣鍑讳慨鏀规寜閽� --> + <el-dialog title="BOM淇敼" :visible.sync="bomRightUp" width="30%"> + <el-form> + 淇敼 + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="bomRightUp = false">鍙� 娑�</el-button> + <el-button type="primary" @click="bomRightUp = false">纭� 瀹�</el-button> + </span> + </el-dialog> + <!-- 鍙充笂渚х偣鍑诲垹闄ゆ寜閽� --> + <el-dialog title="BOM鍒犻櫎" :visible.sync="bomRightDl" width="30%"> + <el-form> + 鍒犻櫎 + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="bomRightDl=false">鍙� 娑�</el-button> + <el-button type="primary" @click="bomRightDl = false">纭� 瀹�</el-button> </span> </el-dialog> </div> @@ -91,11 +272,40 @@ <script> import technology from "./standard-table/technology.vue" import material from "./standard-table/material.vue" +import target from "./standard-table/target.vue" +import product from "./standard-table/product.vue" +import bomClickAdd from '@/components/view/standard-box/bomClickAdd' export default { - components: { technology,material }, - + components: { technology,material,target,product,bomClickAdd }, data() { return { + //宸ュ簭鍒楄〃 + fatherList:[], + //璁惧缁勫垪琛� + deviceList:[], + technologyForm:{ + father:'', + name:'', + deviceGroup:'', + productionQuota:'' + }, + targetForm:{ + pname:'', + unit:'', + internal:'', + required: '' + }, + formTypeOptions:[], + materialForm:{}, + boomRules:{ + father:{required:true,message:'宸ュ簭涓嶈兘涓虹┖',trigger:'change'}, + name:{required:true,message:'宸ヨ壓鍚嶇О涓嶈兘涓虹┖',trigger:'blur'}, + deviceGroup:{required:true,message:'璁惧缁勪笉鑳戒负绌�',trigger:'change'}, + productionQuota:[ + {required:true,message:'鐢熶骇瀹氶涓嶈兘涓虹┖',trigger:'blur'}, + {type:'number',required:true,message:'鏁版嵁绫诲瀷蹇呴』鏄函鏁板瓧',trigger:'blur'} + ] + }, // BOM鏍戞暟鎹粨鏋� list: [], search: null, @@ -104,15 +314,29 @@ checkTreeNode: {},// 鐐瑰嚮閫変腑鏍戣妭鐐� tableData: [], bomAddModelVisible: false,// 鎺у埗bom鏂板妯℃�佹鏄惁鏄剧ず - list: [], + bomLeftAdd: false, + bomRightUp: false, + bomRightDl: false, + formTypeOptions: null, typeselect: 0, returntree: { id:28, }, version: {}, + leftAdd:{ + type: [], + father: null, + standard: null, + name: null, + specifications: null + }, VER: {}, verdata: {}, character: 0, + restaurants: [], + bomName:[], + bomStandard:[], + isLeftAdd: true } }, // watch: { @@ -124,11 +348,204 @@ // } // }, mounted() { + this.tableType=0 this.selectMaterialTree() - // this.selectAll() this.selectVersion() + console.log(this.formTypeOptions); }, methods: { + changeLeftAdd(){ + if(this.leftAdd.type.length===2){ + this.leftAdd.father=null + this.leftAdd.father=this.leftAdd.type[1] + } + if(this.leftAdd.type.length===3){ + this.leftAdd.name=null + this.leftAdd.father=this.leftAdd.type[1] + this.leftAdd.name=this.leftAdd.type[2] + } + if(this.leftAdd.type.length===4){ + this.leftAdd.standard=null + this.leftAdd.father=this.leftAdd.type[1] + this.leftAdd.name=this.leftAdd.type[2] + this.leftAdd.standard=this.leftAdd.type[3] + } + }, + submitForm(formName) { + this.$refs[formName].validate((valid) => { + if (valid) { + let obj=JSON.parse(JSON.stringify(this.leftAdd)) + console.log(obj); + let one=this.list.filter(item=>{ + return item.name===obj.type[0] + })[0] + let two=one.children.filter(item=>{ + return item.name===obj.father + })[0] + console.log("two",two); + //鎵ц涓�浜岀骇鏂板 + if(two===undefined||two===null){ + obj.type=this.getType(obj.type[0]) + this.$axios.post(this.$api.url.leftAddOneTwo,obj,{ + headers: { "Content-Type": "application/json" } + }).then(res=>{ + this.$message({ + message: res.message, + type: 'success' + }); + this.selectMaterialTree() + }) + }else{ + let three=two.children.filter(item=>{ + return item.name===obj.name + })[0] + console.log("three",three); + if(three===undefined||three===null){ + obj.type=this.getType(obj.type[0]) + this.$axios.post(this.$api.url.leftAddOneTwo,obj,{ + headers: { "Content-Type": "application/json" } + }).then(res=>{ + this.$message({ + message: res.message, + type: 'success' + }); + this.selectMaterialTree() + }) + }else{ + //鏂板鏍囧噯鍨嬪彿 + let four=three.children.filter(item=>{ + return item.name===obj.standard + })[0] + if(four===undefined||four===null){ + let StandardDto={ + "id": three.id, + "specifications": obj.specifications, + "standard": obj.standard + } + this.$axios.post(this.$api.url.leftAddThree,StandardDto,{ + headers: { "Content-Type": "application/json" } + }).then(res=>{ + this.$message({ + message: res.message, + type: 'success' + }); + this.selectMaterialTree() + }) + }else{ + let specificationsDto={ + "id": four.id, + "specifications": obj.specifications + } + this.$axios.post(this.$api.url.leftAddFour,specificationsDto,{ + headers: { "Content-Type": "application/json" } + }).then(res=>{ + this.$message({ + message: res.message, + type: 'success' + }); + this.selectMaterialTree() + this.selectVersion() + }) + } + } + } + this.resetForm('leftAdd') + } else { + console.log('error submit!!'); + return false; + } + }); + }, + resetForm(formName) { + this.bomLeftAdd=false + this.$refs[formName].resetFields(); + }, + leftAddBom(){ + + }, + confirmAdd(formName){ + this.$refs[formName].validate(valid=>{ + if(valid){ + console.log(this.technologyForm); + this.$axios.post(this.$api.url.addTechnology, + { + "specificationsId": this.returntree.id, + "technologyDto": JSON.stringify({ + deviceGroup: this.technologyForm.deviceGroup, + father: this.technologyForm.father, + name: this.technologyForm.name, + productionQuota: this.technologyForm.productionQuota, + }) + },{ + headers: { "Content-Type": "application/json" } + }).then(res=>{ + this.$message.success(res.message); + }).catch(error=>{ + this.$message.error(error.message); + }) + this.bomAddModelVisible = false; + } + }) + }, + //鑾峰彇宸ュ簭鍒楄〃 + getFatherList(){ + this.$axios.get(this.$api.url.chooseFather,{ + params:{specificationsId : this.returntree.id} + }).then(res=>{ + this.fatherList = res.data; + }).catch(error=>{ + this.$message.error(error.message); + }) + }, + //鑾峰彇璁惧缁勫垪琛� + getDeviceList(){ + this.$axios.get(this.$api.url.chooseDevice).then(res=>{ + this.deviceList = res.data; + }).catch(error=>{ + this.$message.error(error.message); + }) + }, + showBomAddModel(){ + this.getFatherList(); + this.getDeviceList(); + this.bomAddModelVisible = true + }, + startLeftAdd(){ + + }, + getType(typeName){ + return typeName==="鎴愬搧"?1:2 + }, + handleSelect(item) { + console.log(item); + }, + querySearch(queryString, cb) { + var restaurants = this.restaurants; + var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants; + // 璋冪敤 callback 杩斿洖寤鸿鍒楄〃鐨勬暟鎹� + cb(results); + }, + querySearchName(queryString, cb) { + var restaurants = this.bomName; + var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants; + // 璋冪敤 callback 杩斿洖寤鸿鍒楄〃鐨勬暟鎹� + cb(results); + }, + querySearchStandar(queryString, cb) { + var restaurants = this.bomStandard; + var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants; + // 璋冪敤 callback 杩斿洖寤鸿鍒楄〃鐨勬暟鎹� + cb(results); + }, + loadFatherType(){ + return [{label:"姗¤兌杩炴帴鍣�",value: "姗¤兌杩炴帴鍣�"},{label:"閲戝睘杩炴帴鍣�",value: "閲戝睘杩炴帴鍣�"}, + {label:"婀挎彃鎷旂數杩炴帴鍣�",value: "婀挎彃鎷旂數杩炴帴鍣�"},{label:"鍒嗘敮缁勪欢",value: "鍒嗘敮缁勪欢"}] + }, + createFilter(queryString) { + return (restaurant) => { + return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0); + }; + }, selectDataList() { this.list.forEach(a => { a.code = '[1]' @@ -158,18 +575,21 @@ }, TYPE(val) {//绫诲瀷.鏁版嵁 - console.log(val); + // console.log(val); this.typeselect = val - // console.log(this.typeselect); this.selectVersion() }, handleNodeClick(val) {//鏍戠殑鍊� - console.log(val); - this.returntree = val + if(val.code==='[5]'&&val.children===undefined){ + console.log(val); + this.returntree = val + this.typeselect=0 + this.selectVersion() + } }, - selectVersion() {//鐗堟湰 - this.$axios.get(this.$api.url.selectVersion, { + async selectVersion() {//鐗堟湰 + let v=await this.$axios.get(this.$api.url.selectVersion, { params: { specificationsId: this.returntree.id, type: this.typeselect, @@ -179,12 +599,15 @@ this.version = this.verdata.map(el => { return el = `v${el}` }) - console.log(this.verdata); + // console.log("鐗堟湰"); + return this.verdata[0] }) + this.character=v + this.VER="v"+v + this.selectAll() }, //鍙充晶鏁版嵁 selectAll() { - console.log(this.$axios.get(this.$api.url.selectAll)); this.$axios.get(this.$api.url.selectAll, { params: { specificationsId: this.returntree.id,//tree鐨勭偣鍑诲弽棣� @@ -192,14 +615,24 @@ version: this.character,//鐗堟湰 } }).then(res => { - console.log(res.data); - this.tableData = res.data + let arr = res.data; + this.formatData(arr) + this.tableData = arr; }) }, + formatData(data){ + let arr = data; + for(var i=0;i<arr.length;i++){ + arr[i].rowId = Math.random(); + if(arr[i].children != undefined){ + this.formatData(arr[i].children); + } + } + }, verevent(val) { - console.log(val); + // console.log(val); let cc = val.replace('v', '') - console.log(cc); + // console.log(cc); this.character = cc this.selectAll() // const { v, ...newObj } = val; @@ -208,8 +641,8 @@ }, //浜旂骇鏍� selectMaterialTree() { - this.$axios.get(this.$api.url.selectTreeByMaterial).then(res => { - this.list = res.data + this.$axios.get(this.$api.url.selectTreeByMaterial).then( res => { + this.list=res.data this.list.forEach((el, idx, arr) => { if (idx == 0) { arr[idx].name = '鎴愬搧' @@ -219,8 +652,33 @@ } }) this.selectDataList() + // 榛樿绗竴涓簲绾ц妭鐐规悳绱紝鏂板閰嶇疆椤� + const treeOptions = JSON.parse(JSON.stringify(this.list)); + this.getDefault(treeOptions, 0); + this.formTypeOptions = treeOptions; + this.$nextTick().then(() => { + const firstNode = document.querySelector( + ".el-tree-node .el-tree-node__children .el-tree-node .el-tree-node__children .el-tree-node .el-tree-node__children .el-tree-node .el-tree-node__children .el-tree-node" + ); + try { + firstNode.click(); + } catch (e) { + //TODO handle the exception + } + }); }) }, + getDefault(arr, index) { + for (const item of arr) { + if (item.children && item.children.length > 0) { + // 鏈夊瓙鑺傜偣 + this.getDefault(item.children, index + 1); + if (index === 2) { + item.children = null; + } + } + } + }, filterNode(value, data) { if (!value) return true; return data.label.indexOf(value) !== -1; @@ -260,7 +718,75 @@ this.tableData = productList break; } + }, + // 閫掑綊鏇存敼娣诲姞绾ц仈鎵�闇�灞炴�� + replaceProp(arr){ + for (let index = 0; index < arr.length; index++) { + let element = arr[index]; + element.label=element.name + element.value=element.name + if(element.children!=undefined){ + if(element.code==='[4]'){ + delete element['children'] + continue + } + this.replaceProp(element.children) + } + } } + }, + watch:{ + leftAdd: { + handler(newVal, oldVal) { + if(this.isLeftAdd){ + let tree=JSON.parse(JSON.stringify(this.list)) + let father=null; + if(newVal.father!=null&&newVal.father!=''&&newVal.type.length>0){ + let one=tree.filter(item=>{ + return item.name===newVal.type[0] + })[0] + console.log(one); + let two=one.children.filter(item=>{ + return item.name===newVal.father + })[0] + if(two!=undefined){ + this.bomName=[] + father=JSON.parse(JSON.stringify(two)) + two.children.forEach(item=>{ + let obj={label: item.name,value: item.name} + this.bomName.push(obj) + }) + } + } + if(newVal.name!=null&&newVal!=''&&newVal.father!=null&&newVal.father!=''&&newVal.type.length>0){ + let three=null + if(father!=undefined&&father!=null){ + three=father.children.filter(item=>{ + return item.name===newVal.name + })[0] + } + if(three!=undefined&&three!=null){ + this.bomStandard=[] + three.children.forEach(item=>{ + let obj={label: item.name,value: item.name} + this.bomStandard.push(obj) + }) + } + } + } + }, + deep: true // 娣卞害鐩戝惉瀵硅薄鍐呴儴灞炴�х殑鍙樺寲锛屽彲閫夌殑 + }, + bomLeftAdd:{ + handler(newval,oldVal){ + if(newval){ + let treeOptions = JSON.parse(JSON.stringify(this.list)); + this.replaceProp(treeOptions) + this.formTypeOptions=treeOptions + this.restaurants=this.loadFatherType() + } + } + } } } </script> @@ -295,6 +821,7 @@ .thing .left { width: 295px; height: calc(100% - 32px); + overflow-y: auto; border-right: 3px solid rgb(245, 247, 251); padding: 16px; } diff --git a/src/components/view/unqualifiedManagement.vue b/src/components/view/unqualifiedManagement.vue index 17e01c2..2d8c9d7 100644 --- a/src/components/view/unqualifiedManagement.vue +++ b/src/components/view/unqualifiedManagement.vue @@ -30,6 +30,17 @@ clearable value-format="yyyy-MM-dd" ></el-date-picker> + <span>浜у搧澶х被锛�</span> + <el-select + v-model="search.productCategories" + size="small" + placeholder="璇烽�夋嫨" + style="width: 224px;margin-right: 30px;" + > + <el-option label="鍏ㄩ儴" :value="''"></el-option> + <el-option label="鎴愬搧" :value="1"></el-option> + <el-option label="鍗婃垚鍝�" :value="2"></el-option> + </el-select> <el-button size="mini" @click="clean()"><span>閲� 缃�</span></el-button> <el-button size="mini" @@ -71,7 +82,8 @@ </el-table-column> <el-table-column prop="material_code" label="鏉愭枡缂栫爜"> </el-table-column> - <el-table-column prop="id" label="鏉愭枡鍚嶇О"> </el-table-column> + <el-table-column prop="project_name" label="鏉愭枡鍚嶇О"> + </el-table-column> <el-table-column prop="specifications_model" label="瑙勬牸鍨嬪彿" @@ -97,25 +109,60 @@ </el-table-column> <el-table-column prop="deal_reasult" label="澶勭悊缁撴灉" width="100"> <template slot-scope="scope"> - <span style="color:#34BD66;" v-if="scope.row.deal_reasult == 1" + <span style="color:#E84738;" v-if="scope.row.deal_reasult == 0" >涓嶉�氳繃</span > <span - style="color:#E84738;" - v-else-if="scope.row.deal_reasult == 0" + style="color:#34BD66;" + v-else-if="scope.row.deal_reasult == 1" >閫氳繃</span > </template> </el-table-column> <el-table-column label="鎿嶄綔" width="100"> - <template> + <template slot-scope="scope"> <div style="display: flex;"> - <el-button type="text" siae="small" size="mini">璇勫</el-button> + <el-popover + placement="left" + width="160" + :ref="`popover-${scope.$index}`" + > + <div style="padding: 6px">璇勫鏄惁閫氳繃锛�</div> + <div style="text-align: right; margin: 6px;"> + <el-button + size="mini" + type="text" + style="color: #E84738;" + @click=" + scope._self.$refs[`popover-${scope.$index}`].doClose(); + rawEvaluate(scope.row, 0); + " + >涓嶉�氳繃</el-button + > + <el-button + type="text" + style="color: #34bd66;" + size="mini" + @click=" + scope._self.$refs[`popover-${scope.$index}`].doClose(); + rawEvaluate(scope.row, 1); + " + >閫氳繃</el-button + > + </div> + <el-button + slot="reference" + type="text" + siae="small" + size="mini" + >璇勫</el-button + > + </el-popover> <el-button type="text" siae="small" size="mini" - style=" color:87, 138, 193 ;" + style=" color:87, 138, 193 ;margin-left: 10px;" >鏌ョ湅</el-button > </div> @@ -149,6 +196,7 @@ countSize: 10, // 鏉℃暟/椤� pageSize: 1, // 璧峰椤� formTime: "", // 鏉ユ枡鏃ユ湡 + productCategories: "", // 浜у搧澶х被 dealState: "" // 澶勭悊鐘舵�� }, unqualifiedTable: [], // 椤甸潰琛ㄦ牸鏁版嵁 @@ -185,6 +233,17 @@ dealState: "" // 澶勭悊鐘舵�� }; this.getDetailInfo(); + }, + rawEvaluate(row, passOrNo) { + this.$axios + .post(this.$api.url.evaluatePassOrNo, { + rawId: row.id, + passOrNo: passOrNo + }) + .then(res => { + this.unqualifiedTable = []; + this.getDetailInfo(); + }); } } }; -- Gitblit v1.9.3