From a0b1fdec2bc5ddad11e981936b80d0fdf1e4bc69 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期三, 03 七月 2024 09:25:06 +0800 Subject: [PATCH] Merge branch 'master' of http://114.132.189.42:9002/r/center-lims-before into master --- src/components/view/b2-standard.vue | 689 +++++++++++++++++++++++++++++++++----------------------- 1 files changed, 406 insertions(+), 283 deletions(-) diff --git a/src/components/view/b2-standard.vue b/src/components/view/b2-standard.vue index 10ec394..9c1979c 100644 --- a/src/components/view/b2-standard.vue +++ b/src/components/view/b2-standard.vue @@ -65,22 +65,26 @@ width: 80% !important; overflow: hidden; } - >>>.el-table__body-wrapper{ + + >>>.el-table__body-wrapper { height: calc(100% - 46px) !important; } - >>>.header-class{ + + >>>.header-class { height: 40px !important; } - >>>.header-class th.el-table__cell>.cell{ + + >>>.header-class th.el-table__cell>.cell { line-height: 20px !important; padding-top: 0 !important; padding-bottom: 0 !important; } - >>>.el-table__row{ + + >>>.el-table__row { height: 35px !important; } - .search{ - height: 20%; + + .search { border-bottom: 1px solid #ebeef5; margin-bottom: 16px; display: flex; @@ -88,27 +92,29 @@ box-sizing: border-box; padding-bottom: 10px; } - .search-item{ + + .search-item { display: flex; align-items: center; flex-wrap: wrap; } - .search-item .el-row{ + + .search-item .el-row { display: flex; align-items: center; } - .search-item .el-col{ + + .search-item .el-col { margin-left: 0; } - .more-edit .dialog-footer{ + + .more-edit .dialog-footer { position: absolute; top: 15px; right: 70px; } - >>>.more-edit .el-dialog__body{ - height: calc(100vh - 90px); - } - >>>.is-disabled .el-textarea__inner{ + + >>>.is-disabled .el-textarea__inner { background: rgba(0, 0, 0, 0.05) !important; } </style> @@ -139,6 +145,30 @@ .standard .el-table .warning-row .cell { color: #bababa; } + + .standard .el-table-filter__list { + max-height: 400px; + overflow-y: auto; + } + + .standard .el-upload { + width: 100%; + } + + .standard .el-upload-dragger { + width: 100%; + } + + .standard .handleBtn.is-disabled .el-upload:focus { + color: #C0C4CC !important; + } + + .standard .avatar-uploader .el-upload { + height: 80px; + display: flex; + align-items: center; + justify-content: center; + } </style> <template> @@ -161,11 +191,12 @@ <div class="custom-tree-node" slot-scope="{ node, data }"> <el-row style="width: 100%;"> <el-col :span="21" :class="{sort:node.level>3}" :title="data.label"> - <span><i - :class="`node_i ${data.children != undefined ? (data.code==='[1]'?'el-icon-folder-opened':'el-icon-folder') : 'el-icon-tickets'}`"></i> - {{ data.code }} {{ data.label }}</span> + <span> + <i :class="`node_i ${data.children != undefined ? (data.code==='[1]'?'el-icon-folder-opened':'el-icon-folder') : 'el-icon-tickets'}`"></i> + {{ data.label }} + </span> </el-col> - <el-col :span="2" style="text-align: right;" v-if="delStandardTree&&node.level==5"> + <el-col :span="2" style="text-align: right;" v-if="delStandardTree&&(node.data.children===null||node.data.children===undefined)"> <el-button type="text" size="mini" @click.stop="remove(node, data)"> <i class="el-icon-delete"></i> </el-button> @@ -177,11 +208,14 @@ <div class="right"> <el-row class="title" style="width: 100%;"> <el-col :span="20" style="font-size: 14px;color: #999;">{{selectTree}}</el-col> - <el-button size="small" type="primary" @click="handleMore" style="position: absolute;right: 0px;top: 1px;" v-if="upStandardProduct">鎵归噺缂栬緫</el-button> + <el-button size="small" type="primary" style="position: absolute;right: 100px;top: 1px;" @click="uploadDia = true" v-if="inExcelOfTreePower">瀵煎叆</el-button> + <el-button size="small" type="primary" @click="handleMore" style="position: absolute;right: 5px;top: 1px;" + v-if="upStandardProduct">鎵归噺缂栬緫</el-button> </el-row> <el-row class="standard_table" v-loading="tableLoad"> - <el-table class="el-table" :data="standardList" style="width: 100%;height: 220px !important;" height="220" tooltip-effect="dark" - highlight-current-row @row-click="rowClick" ref="standard" header-row-class-name="header-class"> + <el-table class="el-table" :data="standardList" style="width: 100%;height: 220px !important;" height="220" + tooltip-effect="dark" highlight-current-row @row-click="rowClick" ref="standard" + header-row-class-name="header-class"> <el-table-column prop="code" label="鏍囧噯缂栧彿" show-overflow-tooltip width="200"> <template slot-scope="scope"> <span style="color: red;font-size: 14px;">{{scope.row['code']}}</span> @@ -189,32 +223,21 @@ </el-table-column> <el-table-column prop="name" label="鏍囧噯鍚嶇О" show-overflow-tooltip></el-table-column> <el-table-column prop="remark" label="澶囨敞" show-overflow-tooltip></el-table-column> - <!-- <el-table-column prop="createUserName" label="鍒涘缓浜�"></el-table-column> - <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" width="250px"></el-table-column> --> - <!-- <el-table-column label="鎿嶄綔" width="100" align="center" v-if="delStandardMethod"> - <template slot-scope="scope"> - <el-button type="text" size="small" @click="delStandardMethodByFLSSM(scope.row.id)">鍒犻櫎</el-button> - </template> - </el-table-column> --> </el-table> </el-row> <el-row class="product_table" v-loading="tableLoad2"> <el-table :data="productList" ref="productTable" style="width: 100%;" height="100%" tooltip-effect="dark" stripe - :fit="true" border - @selection-change="handleSelectionChange" :row-class-name="tableRowClassName" - @select="upProductSelect" - @select-all="handleAll" - class="productTable" - header-row-class-name="header-class"> - <el-table-column type="selection" width="50" > + :fit="true" border @selection-change="handleSelectionChange" :row-class-name="tableRowClassName" + @select="upProductSelect" @select-all="handleAll" class="productTable" header-row-class-name="header-class"> + <el-table-column type="selection" width="50"> </el-table-column> + <el-table-column prop="sample" label="浜у搧" min-width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="model" label="鍨嬪彿" min-width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="inspectionItem" label="妫�楠岄」" min-width="140" show-overflow-tooltip></el-table-column> <!-- <el-table-column prop="inspectionItemClassify" label="妫�楠岄」绫诲瀷" width="120" show-overflow-tooltip></el-table-column> --> <el-table-column prop="inspectionItemSubclass" label="妫�楠岄」瀛愰」" min-width="140" show-overflow-tooltip></el-table-column> - <el-table-column prop="sonLaboratory" label="瀛愬疄楠屽" width="130" show-overflow-tooltip :filters="filters" - :filter-method="filterHandler"></el-table-column> + <el-table-column prop="sonLaboratory" label="瀛愬疄楠屽" width="130" show-overflow-tooltip></el-table-column> <el-table-column prop="ask" label="瑕佹眰鍊�" min-width="200px"> <template slot-scope="scope"> <el-input size="small" placeholder="瑕佹眰鍊�" v-model="scope.row.ask" clearable @@ -261,7 +284,7 @@ <el-table-column prop="templateId" label="妯℃澘" width="200"> <template slot-scope="scope"> <el-select v-model="scope.row.templateId" size="small" filterable :disabled="!upStandardProduct" - @change="(value)=>upStandardProductListOfTemplate(value,scope.row.id)"> + @change="(value)=>upStandardProductListOfTemplate(value,scope.row.id)"> <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option> </el-select> </template> @@ -273,19 +296,14 @@ </template> </el-table-column> </el-table> - <el-pagination - style="position: absolute;right: 16px;bottom: 1px;" - @current-change="handleCurrentChange" - :current-page="currentPage" - layout="total, prev, pager, next, jumper" - :page-size="50" - :total="total"> + <el-pagination style="position: absolute;right: 16px;bottom: 1px;" @current-change="handleCurrentChange" + :current-page="currentPage" layout="total, prev, pager, next, jumper" :page-size="50" :total="total"> </el-pagination> </el-row> </div> <el-dialog title="鍒嗙被娣诲姞" :visible.sync="addDia" width="400px"> <div class="body"> - <el-row style="line-height: 50px;"> + <!-- <el-row style="line-height: 50px;"> <el-col :span="6" style="text-align: right;">宸ュ巶锛�</el-col> <el-col :span="16" :offset="1"> <el-input size="small" readonly v-model="addOb.factory"></el-input> @@ -308,13 +326,13 @@ <el-col :span="16" :offset="1"> <el-input v-model="addOb.sample" readonly size="small"></el-input> </el-col> - </el-row> + </el-row> --> <el-row style="line-height: 50px;"> <el-col :span="6" style="text-align: right;"> <span class="required-span">* </span>鍨嬪彿锛� </el-col> <el-col :span="16" :offset="1"> - <el-input v-model="addOb.model" placeholder="璇疯緭鍏ュ瀷鍙�" clearable size="small"></el-input> + <el-input v-model="addOb.model" placeholder="璇疯緭鍏ュ瀷鍙�" clearable size="small" @keyup.enter.native="addStandardTree"></el-input> </el-col> </el-row> </div> @@ -323,8 +341,8 @@ <el-button type="primary" @click="addStandardTree" :loading="addLoad">纭� 瀹�</el-button> </span> </el-dialog> - <el-dialog title="鎵归噺缂栬緫" :visible.sync="moreEdit" width="90%" style="height: 100vh;" class="more-edit"> - <div class="body" style="height: 100%;display: flex;flex-direction: column;"> + <el-dialog title="鎵归噺缂栬緫" :visible.sync="moreEdit" width="90%" class="more-edit"> + <div class="body" style="display: flex;flex-direction: column;height: 85vh;"> <div class="search"> <div class="search-item"> <el-row style="width: 25%;margin-bottom: 16px;"> @@ -340,7 +358,8 @@ <!-- <span class="required-span">* </span> --> 瑕佹眰鎻忚堪锛�</el-col> <el-col :span="16" style="display: flex;align-items: flex-start;height: 100%;"> - <el-input size="small" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 3}" v-model="moreInfo.tell" :disabled="moreSelects.length==0"></el-input> + <el-input size="small" clearable type="textarea" :autosize="{ minRows: 1, maxRows: 3}" + v-model="moreInfo.tell" :disabled="moreSelects.length==0"></el-input> </el-col> </el-row> <el-row style="width: 25%;margin-bottom: 16px;"> @@ -348,7 +367,8 @@ <!-- <span class="required-span">* </span> --> 璇曢獙鏂规硶锛�</el-col> <el-col :span="16"> - <el-select v-model="moreInfo.methodS" size="small" filterable style="width: 100%;" :disabled="moreSelects.length==0"> + <el-select v-model="moreInfo.methodS" size="small" filterable style="width: 100%;" + :disabled="moreSelects.length==0" clearable> <el-option v-for="(a, ai) in methodList" :key="ai" :label="a.label" :value="a.value"></el-option> </el-select> </el-col> @@ -357,7 +377,7 @@ <el-col :span="6" style="text-align: right;"> <!-- <span class="required-span">* </span> --> 鍗曚环(鍏�)锛�</el-col> - <el-col :span="16" > + <el-col :span="16"> <el-input size="small" v-model="moreInfo.price" clearable :disabled="moreSelects.length==0"></el-input> </el-col> </el-row> @@ -366,7 +386,8 @@ <!-- <span class="required-span">* </span> --> 宸ユ椂绯绘暟锛�</el-col> <el-col :span="16"> - <el-input size="small" v-model="moreInfo.manHour" clearable :disabled="moreSelects.length==0"></el-input> + <el-input size="small" v-model="moreInfo.manHour" clearable + :disabled="moreSelects.length==0"></el-input> </el-col> </el-row> <el-row style="width: 25%;"> @@ -374,13 +395,27 @@ <!-- <span class="required-span">* </span> --> 妯℃澘锛�</el-col> <el-col :span="16"> - <el-select v-model="moreInfo.templateId" size="small" filterable placeholder="妯℃澘" style="width: 100%;" :disabled="moreSelects.length==0"> + <el-select v-model="moreInfo.templateId" size="small" filterable placeholder="妯℃澘" style="width: 100%;" + :disabled="moreSelects.length==0"> <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option> </el-select> </el-col> </el-row> - <el-row style="width: 50%;"> - <el-col :span="23" style="display: flex;align-items: center;justify-content: end;"> + <el-row style="width: 25%;"> + <el-col :span="6" style="text-align: right;"> + 鏄惁鍚敤锛�</el-col> + <el-col :span="16"> + <el-select v-model="moreInfo.state" size="small" filterable placeholder="妯℃澘" style="width: 100%;" + :disabled="moreSelects.length==0" clearable> + <el-option label="鍚敤" :value="1"></el-option> + <el-option label="涓嶅惎鐢�" :value="0"></el-option> + </el-select> + </el-col> + </el-row> + <el-row style="width: 100%;margin-top: 8px;"> + <el-col :span="24" style="display: flex;align-items: center;justify-content: end;"> + <el-button @click="clearProduct(1)" size="small" type="danger">閲嶇疆鍗曚环</el-button> + <el-button @click="clearProduct(2)" size="small" type="danger">閲嶇疆宸ユ椂绯绘暟</el-button> <el-button type="primary" size="small" @click="sectionUp(moreSelects)">璁剧疆鍖洪棿</el-button> <el-button @click="moreEdit = false" size="small">鍙� 娑�</el-button> <el-button type="primary" @click="subMoreEdit" :loading="moreEditLoad" size="small">淇� 瀛�</el-button> @@ -389,22 +424,20 @@ </div> </div> <div style="flex: 1;overflow-y: auto;" v-loading="productTableLoading0"> - <el-table :data="productList0" ref="productTable0" style="width: 100%;" height="94%" tooltip-effect="dark" - stripe - :fit="true" border - @select-all="handleSelectAll0" - @select="handleSelectionChange0" - header-row-class-name="header-class" - :row-key="row=>row.id" - > - <el-table-column type="selection" width="50" > + <el-table :data="productList0" ref="productTable0" style="width: 100%;" height="96%" tooltip-effect="dark" + stripe :fit="true" border @select-all="handleSelectAll0" @select="handleSelectionChange0" + header-row-class-name="header-class" :row-key="row=>row.id" @filter-change="filterHandler" highlight-current-row> + <el-table-column type="selection" width="50"> </el-table-column> + <el-table-column prop="sample" label="浜у搧" min-width="100" show-overflow-tooltip></el-table-column> <el-table-column prop="model" label="鍨嬪彿" min-width="100" show-overflow-tooltip></el-table-column> - <el-table-column prop="inspectionItem" label="妫�楠岄」" min-width="140" show-overflow-tooltip :filter-method="filterHandler" :filters="filters0"></el-table-column> - <el-table-column prop="inspectionItemSubclass" label="妫�楠岄」瀛愰」" min-width="140" - show-overflow-tooltip :filter-method="filterHandler" :filters="filters1"></el-table-column> + <el-table-column prop="inspectionItem" label="妫�楠岄」" min-width="140" show-overflow-tooltip :filters="filters0" + :filter-multiple="false" column-key="inspectionItem" filter-placement="bottom-start"></el-table-column> + <el-table-column prop="inspectionItemSubclass" label="妫�楠岄」瀛愰」" min-width="140" show-overflow-tooltip + :filters="filters1" :filter-multiple="false" column-key="inspectionItemSubclass" + filter-placement="bottom-start"></el-table-column> <el-table-column prop="sonLaboratory" label="瀛愬疄楠屽" width="130" show-overflow-tooltip :filters="filters" - :filter-method="filterHandler"></el-table-column> + :filter-multiple="false" column-key="sonLaboratory" filter-placement="bottom-start"></el-table-column> <el-table-column prop="ask" label="瑕佹眰鍊�" min-width="200px"></el-table-column> <el-table-column prop="tell" label="瑕佹眰鎻忚堪" min-width="220px"></el-table-column> <el-table-column prop="methodS" label="璇曢獙鏂规硶" width="200"></el-table-column> @@ -419,45 +452,13 @@ </el-table-column> <el-table-column prop="section" label="鍖洪棿" width="120" show-overflow-tooltip></el-table-column> </el-table> - <el-pagination - style="position: absolute;right: 16px;bottom: 4px;" - @current-change="handleCurrentChange0" - :current-page="currentPage0" - layout="total, prev, pager, next, jumper" - :page-size="50" - :total="total0"> - </el-pagination> + <el-pagination style="position: absolute;right: 16px;bottom: 4px;" @current-change="handleCurrentChange0" + :current-page="currentPage0" layout="total, prev, pager, next, jumper" :page-size="100" :total="total0"> + </el-pagination> </div> </div> </el-dialog> - <!-- <el-dialog title="鏂板鏍囧噯" :visible.sync="addStandardDia" width="400px"> - <div class="body"> - <el-row style="line-height: 50px;"> - <el-col :span="6" style="text-align: right;"> - <span class="required-span">* </span>鏍囧噯鍚嶇О锛� - </el-col> - <el-col :span="16" :offset="1"> - <el-select v-model="standardId" size="small" style="width: 100%;" clearable> - <el-option v-for="(a, ai) in standardEnum" :key="ai" :value="a.value" :label="a.label"></el-option> - </el-select> - </el-col> - </el-row> - </div> - <span slot="footer" class="dialog-footer"> - <el-button @click="addStandardDia = false">鍙� 娑�</el-button> - <el-button type="primary" @click="addStandardMethodList" :loading="addLoad2">纭� 瀹�</el-button> - </span> - </el-dialog> --> - <!-- <el-dialog title="鏂板椤圭洰" :visible.sync="addProductDia" width="70%"> - <div class="body" style="height: 60vh;" v-if="addProductDia"> - <ValueTable ref="ValueTable" :url="$api.capacityScope.selectItemParameterList" :componentData="componentData" /> - </div> - <span slot="footer" class="dialog-footer"> - <el-button @click="addProductDia = false">鍙� 娑�</el-button> - <el-button type="primary" @click="addStandardProductDo" :loading="addLoad3">纭� 瀹�</el-button> - </span> - </el-dialog> --> - <el-dialog title="鍖洪棿璁剧疆" :visible.sync="sectionUpDia" width="70%"> + <el-dialog title="鍖洪棿璁剧疆" :visible.sync="sectionUpDia" width="70%" :close-on-click-modal="false"> <div class="body" style="padding: 5px 0;"> <el-table :data="sectionList" border style="width: 100%" height="350px"> <el-table-column type="index" label="搴忓彿" width="70" align="center"> @@ -499,7 +500,21 @@ <span slot="footer" class="dialog-footer"> <el-button @click="sectionUpDia = false">鍙� 娑�</el-button> <el-button type="primary" @click="sectionLoadAdd" :loading="sectionLoad">淇� 瀛�</el-button> - <el-button type="primary" @click="sectionList.push({thing: ''})" icon="el-icon-plus"></el-button> + <el-button type="primary" @click="sectionList.push({thing: '',price: sectionRow.price,manHour: sectionRow.manHour})" icon="el-icon-plus"></el-button> + </span> + </el-dialog> + <el-dialog title="鏁版嵁瀵煎叆" :visible.sync="uploadDia" width="500px"> + <div style="margin: 0 auto;"> + <el-upload ref="upload" drag :action="javaApi + $api.standardTree.inExcelOfTree" :headers="token" :file-list="fileList" name="file" + :auto-upload="false" accept=".xlsx" :limit="1" :on-change="beforeUpload" :on-success="onSuccess" + :on-error="onError"> + <i class="el-icon-upload"></i> + <div class="el-upload__text">灏嗘枃浠舵嫋鍒版澶勶紝鎴�<em>鐐瑰嚮涓婁紶</em></div> + </el-upload> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="uploadDia = false">鍙� 娑�</el-button> + <el-button type="primary" @click="submitUpload()" :loading="uploading">涓� 浼�</el-button> </span> </el-dialog> </div> @@ -586,69 +601,53 @@ sectionRow: null, sectionList: [], templateList: [], - total:0, - currentPage:1, + total: 0, + currentPage: 1, standardId: 0, - moreEdit:false, - moreEditLoad:false, - moreSelects:[], - total0:0, - currentPage0:1, + moreEdit: false, + moreEditLoad: false, + moreSelects: [], + total0: 0, + currentPage0: 1, productList0: [], - moreInfo:{ - ask:'', - tell:'', - methodS:'', - price:'', - manHour:'', - templateId:'' + moreInfo: { + ask: '', + tell: '', + methodS: '', + price: '', + manHour: '', + templateId: '', + state: null }, - methodList:[], - productTableLoading0:false, - filters0:[ - { - text:'娴嬭瘯', - value:0, - }, - { - text:'娴嬭瘯1', - value:1, - }, - { - text:'娴嬭瘯2', - value:2, - } - ], - filters1:[ - { - text:'娴嬭瘯', - value:0, - }, - { - text:'娴嬭瘯1', - value:1, - }, - { - text:'娴嬭瘯2', - value:2, - } - ] + methodList: [], + productTableLoading0: false, + filters0: [], + filters1: [], + pages: 1, + inspectionItem: null, + inspectionItemSubclass: null, + sonLaboratory: null, + uploadDia: false, + token: null, + fileList: [], + inExcelOfTreePower: false, + uploading: false, } }, watch: { moreEdit(val) { - if(!val){ + if (!val) { this.$refs.productTable0.clearSelection() this.moreSelects = [] this.currentPage0 = 1; this.productList0 = [] this.moreInfo = { - ask:'', - tell:'', - methodS:'', - price:'', - manHour:'', - templateId:'' + ask: '', + tell: '', + methodS: '', + price: '', + manHour: '', + templateId: '' } } } @@ -668,6 +667,10 @@ this.selectEnumByCategoryForInspectionValueType() this.selectEnumByCategoryForSonLaboratory() this.getStandardTemplate() + this.selectStandardMethods() + this.token = { + 'token': sessionStorage.getItem('token') + } }, methods: { filterNode(value, data) { @@ -701,7 +704,11 @@ }, getNodeParent(val) { if (val.parent != null) { - this.selectTree += ' - ' + val.label + if(val.data.children === null){ + this.selectTree += ' - ' + val.label + ' - ' + 'null' + }else{ + this.selectTree += ' - ' + val.label + } this.getNodeParent(val.parent) } }, @@ -874,8 +881,8 @@ }) }, addStandardTree() { - if (this.addOb.sample == null || this.addOb.sample == '') { - this.$message.error('浜у搧涓嶅瓨鍦�') + if (this.addOb.sampleType == null || this.addOb.sampleType == '') { + this.$message.error('瀵硅薄涓嶅瓨鍦�') return } if (this.addOb.model == null || this.addOb.model == '') { @@ -933,6 +940,7 @@ let delStandardProduct = false let addStandardProduct = false let delStandardTree = false + let inExcelOfTreePower = false for (var i = 0; i < power.length; i++) { if (power[i].menuMethod == 'addStandardTree') { add = true @@ -955,6 +963,9 @@ if (power[i].menuMethod == 'delStandardTree') { delStandardTree = true } + if (power[i].menuMethod == 'inExcelOfTree') { + inExcelOfTreePower = true + } } this.addPower = add this.addStandardMethod = addStandardMethod @@ -963,15 +974,14 @@ this.delStandardProduct = delStandardProduct this.addStandardProduct = addStandardProduct this.delStandardTree = delStandardTree + this.inExcelOfTreePower = inExcelOfTreePower }, upStandardProductList(value, index) { this.$axios.post(this.$api.standardTree.upStandardProductList, { - id: index, - ask: value - }, { - headers: { - 'Content-Type': 'application/json' - } + str: JSON.stringify({ + id: index, + ask: value + }) }).then(res => { if (res.code == 201) { this.$message.error('鏈繚瀛�') @@ -982,12 +992,10 @@ }, upStandardProductListOfTell(value, index) { this.$axios.post(this.$api.standardTree.upStandardProductList, { - id: index, - tell: value - }, { - headers: { - 'Content-Type': 'application/json' - } + str: JSON.stringify({ + id: index, + tell: value + }) }).then(res => { if (res.code == 201) { this.$message.error('鏈繚瀛�') @@ -998,12 +1006,10 @@ }, upStandardProductListOfMethodS(value, index) { this.$axios.post(this.$api.standardTree.upStandardProductList, { - id: index, - methodS: value - }, { - headers: { - 'Content-Type': 'application/json' - } + str: JSON.stringify({ + id: index, + methodS: value + }) }).then(res => { if (res.code == 201) { this.$message.error('鏈繚瀛�') @@ -1014,12 +1020,10 @@ }, upStandardProductListOfPrice(value, index) { this.$axios.post(this.$api.standardTree.upStandardProductList, { - id: index, - price: value - }, { - headers: { - 'Content-Type': 'application/json' - } + str: JSON.stringify({ + id: index, + price: value + }) }).then(res => { if (res.code == 201) { this.$message.error('鏈繚瀛�') @@ -1030,12 +1034,10 @@ }, upStandardProductListOfManHour(value, index) { this.$axios.post(this.$api.standardTree.upStandardProductList, { - id: index, - manHour: value - }, { - headers: { - 'Content-Type': 'application/json' - } + str: JSON.stringify({ + id: index, + manHour: value + }) }).then(res => { if (res.code == 201) { this.$message.error('鏈繚瀛�') @@ -1046,12 +1048,10 @@ }, upStandardProductListOfTemplate(value, index) { this.$axios.post(this.$api.standardTree.upStandardProductList, { - id: index, - templateId: value - }, { - headers: { - 'Content-Type': 'application/json' - } + str: JSON.stringify({ + id: index, + templateId: value + }) }).then(res => { if (res.code == 201) { this.$message.error('鏈繚瀛�') @@ -1144,7 +1144,7 @@ this.productList.forEach(a => { if (a.state == 1) this.toggleSelection(a) }) - }, 200) + }, 300) this.tableLoad2 = false }) }, @@ -1163,12 +1163,10 @@ upProductSelect(selection, row) { row.state = (row.state == 1 ? 0 : 1) this.$axios.post(this.$api.standardTree.upStandardProductList, { - id: row.id, - state: row.state - }, { - headers: { - 'Content-Type': 'application/json' - } + str: JSON.stringify({ + id: row.id, + state: row.state + }) }).then(res => { if (res.code == 201) { this.$message.error('鏈繚瀛�') @@ -1177,19 +1175,37 @@ // this.$message.success('宸蹭繚瀛�') }) }, - filterHandler(value, row, column) { - const property = column['property']; - return row[property] === value; + filterHandler(value) { + for (let column in value) { + if (value[column].length === 0) { + if (column === 'inspectionItem') { + this.inspectionItem = null + } else if (column === 'inspectionItemSubclass') { + this.inspectionItemSubclass = null + } else if (column === 'sonLaboratory') { + this.sonLaboratory = null + } + } else { + if (column === 'inspectionItem') { + this.inspectionItem = value[column][0] + } else if (column === 'inspectionItemSubclass') { + this.inspectionItemSubclass = value[column][0] + } else if (column === 'sonLaboratory') { + this.sonLaboratory = value[column][0] + } + } + this.getList() + } }, handleAll(e) { if (e.length > 0) { - this.productList = this.productList.map(m => { + this.productList.map(m => { m.state = 0 this.upProductSelect(null, m) return m }) } else { - this.productList = this.productList.map(m => { + this.productList.map(m => { m.state = 1 this.upProductSelect(null, m) return m @@ -1198,12 +1214,13 @@ }, sectionUp(row) { if (Array.isArray(row)) { - // 鍊兼槸涓�涓暟缁� - if(row.length === 0){ - return this.$message.error('璇烽�夋嫨妫�楠岄」') - } - this.sectionRow = {} - this.sectionUpDia = true + // 鍊兼槸涓�涓暟缁� + if (row.length === 0) { + return this.$message.error('璇烽�夋嫨妫�楠岄」') + } + this.sectionRow = {} + this.sectionUpDia = true + this.sectionList = [] } else { // 鍊兼槸涓�涓璞� this.sectionRow = row @@ -1251,14 +1268,35 @@ this.sectionRow.manHour = JSON.stringify(manHourList) } this.sectionLoad = true - if(this.moreSelects.length === 0){ - this.$axios.post(this.$api.standardTree.upStandardProductList, { - id: this.sectionRow.id, - section: this.sectionRow.section, - ask: this.sectionRow.ask, - tell: this.sectionRow.tell, - price: this.sectionRow.price, - manHour: this.sectionRow.manHour + if (this.moreSelects.length === 0) { + this.$axios.post(this.$api.standardTree.upStandardProductList, { + str: JSON.stringify({ + id: this.sectionRow.id, + section: this.sectionRow.section, + ask: this.sectionRow.ask, + tell: this.sectionRow.tell, + price: this.sectionRow.price, + manHour: this.sectionRow.manHour + }) + }).then(res => { + this.sectionLoad = false + if (res.code == 201) { + this.$message.error('鏈繚瀛�') + return + } + this.$message.success('宸蹭繚瀛�') + this.sectionUpDia = false + }) + } else { + this.$axios.post(this.$api.standardTree.upStandardProducts, { + ids: JSON.stringify(this.moreSelects.map(a => a.id)), + standardProductList: { + section: this.sectionRow.section, + ask: this.sectionRow.ask, + tell: this.sectionRow.tell, + price: this.sectionRow.price, + manHour: this.sectionRow.manHour + } }, { headers: { 'Content-Type': 'application/json' @@ -1271,33 +1309,12 @@ } this.$message.success('宸蹭繚瀛�') this.sectionUpDia = false + this.currentPage0 = 1; + this.getList() + this.rowClick({ + id: this.standardId + }) }) - }else{ - this.$axios.post(this.$api.standardTree.upStandardProducts, { - ids:this.moreSelects.map(a=>a.id), - standardProductList:{ - section: this.sectionRow.section, - ask: this.sectionRow.ask, - tell: this.sectionRow.tell, - price: this.sectionRow.price, - manHour: this.sectionRow.manHour - } - }, { - headers: { - 'Content-Type': 'application/json' - } - }).then(res => { - this.sectionLoad = false - if (res.code == 201) { - this.$message.error('鏈繚瀛�') - return - } - this.$message.success('宸蹭繚瀛�') - this.sectionUpDia = false - this.currentPage0 = 1; - this.getList() - this.rowClick({id:this.standardId}) - }) } }, getStandardTemplate() { @@ -1322,12 +1339,11 @@ this.tableLoad2 = false }) }, - async handleMore(){ - if((!this.standardId&&this.standardId!=0)||this.standardList.length==0){ + async handleMore() { + if ((!this.standardId && this.standardId != 0) || this.standardList.length == 0) { return this.$message.error('璇烽�夋嫨瀹為獙瀹ゃ�佹牱鍝�') } await this.getList() - this.selectStandardMethods() this.moreEdit = true }, selectStandardMethods() { @@ -1342,19 +1358,24 @@ this.methodList = data }) }, - subMoreEdit(){ - if(this.moreSelects.length===0){ + subMoreEdit() { + if (this.moreSelects.length === 0) { return this.$message.error('璇烽�夋嫨妫�楠岄」') } this.moreEditLoad = true + for (let a in this.moreInfo) { + if (this.moreInfo[a] == '') { + delete this.moreInfo[a] + } + } this.$axios.post(this.$api.standardTree.upStandardProducts, { - ids:this.moreSelects.map(a=>a.id), - standardProductList:this.moreInfo - }, { - headers: { - 'Content-Type': 'application/json' - } - }).then(res => { + ids: JSON.stringify(this.moreSelects.map(a => a.id)), + standardProductList: this.moreInfo + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { this.moreEditLoad = false if (res.code == 201) { this.$message.error('鏈繚瀛�') @@ -1363,7 +1384,9 @@ this.$message.success('宸蹭繚瀛�') this.currentPage0 = 1; this.getList() - this.rowClick({id:this.standardId}) + this.rowClick({ + id: this.standardId + }) // this.moreInfo = { // ask:'', // tell:'', @@ -1374,49 +1397,149 @@ // } }) }, - handleSelectAll0(rows){ - if(rows.length){ - rows.forEach(a=>{ - if(!this.moreSelects.find(b=>a.id===b.id)){ + handleSelectAll0(rows) { + if (rows.length) { + rows.forEach(a => { + if (!this.moreSelects.find(b => a.id === b.id)) { this.moreSelects.push(a) } }) - }else{ - this.productList0.forEach(a=>{ - this.moreSelects = this.moreSelects.filter(b=>b.id!=a.id ) + } else { + this.productList0.forEach(a => { + this.moreSelects = this.moreSelects.filter(b => b.id != a.id) }) } }, - handleSelectionChange0(val,row){ - if(this.moreSelects.find(a=>a.id===row.id)){ - this.moreSelects = this.moreSelects.filter(a=>a.id!=row.id) - }else{ + handleSelectionChange0(val, row) { + if (this.moreSelects.find(a => a.id === row.id)) { + this.moreSelects = this.moreSelects.filter(a => a.id != row.id) + } else { this.moreSelects.push(row) } }, - getList(){ + getList() { this.productTableLoading0 = true - this.$axios.post(this.$api.standardTree.selectStandardProductListByMethodId, { + this.getItemEnum() + this.$axios.post(this.$api.standardTree.selectStandardProductByMethodId, { id: this.standardId, tree: this.selectTree, - page: this.currentPage0 + page: this.currentPage0, + laboratory: this.sonLaboratory, + items: this.inspectionItemSubclass, + item: this.inspectionItem }).then(res => { - this.productList0 = res.data.productList + this.productList0 = res.data.records this.total0 = res.data.total this.productTableLoading0 = false - this.$nextTick(()=>{ - this.productList0.forEach((a,i) => { - if(this.moreSelects.find(b=>a.id==b.id)){ - // console.log(111111111,a) - this.$refs.productTable0.toggleRowSelection(this.productList0[i],true) + this.page = res.data.pages + this.$nextTick(() => { + this.productList0.forEach((a, i) => { + if (this.moreSelects.find(b => a.id == b.id)) { + this.$refs.productTable0.toggleRowSelection(this.productList0[i], true) } }) }) }) }, - handleCurrentChange0(e){ + handleCurrentChange0(e) { this.currentPage0 = e; this.getList() + }, + getItemEnum() { + this.$axios.post(this.$api.standardTree.selectStandardProductEnumByMethodId, { + id: this.standardId, + tree: this.selectTree, + item:this.inspectionItem + }).then(res => { + this.filters0 = [] + this.filters1 = [] + res.data.item.forEach(a => { + this.filters0.push({ + text: a.inspectionItem, + value: a.inspectionItem + }) + }) + res.data.items.forEach(a => { + if (a != null) { + this.filters1.push({ + text: a.inspectionItemSubclass, + value: a.inspectionItemSubclass + }) + } + }) + }) + }, + beforeUpload(file, fileList) { + if (file.raw.type != 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet') { + this.$message.error('涓婁紶鏂囦欢鏍煎紡涓嶆纭�'); + this.$refs.upload.clearFiles() + return false; + } + }, + submitUpload() { + if (this.$refs.upload.uploadFiles.length == 0) { + this.$message.error('鏈�夋嫨鏂囦欢') + return + } + this.uploading = true + this.$refs.upload.submit(); + }, + onSuccess(response, file, fileList) { + this.$refs.upload.clearFiles() + this.uploadDia = false + this.uploading = false + if (response.code == 201) { + this.$message.error(response.message) + return + } + this.$message.success('涓婁紶鎴愬姛') + this.standardList = [] + this.productList = [] + this.selectStandardTreeList() + }, + onError(err, file, fileList) { + this.$message.error('涓婁紶澶辫触') + this.$refs.upload.clearFiles() + this.uploading = false + }, + clearProduct(type){ + this.$confirm('鏄惁娓呯┖?', "璀﹀憡", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning" + }).then(() => { + if(type === 1){ + this.$axios.post(this.$api.standardTree.resetTreeOfPrice, { + tree: this.selectTree, + standardId: this.standardId + }).then(res => { + if (res.code == 201) { + return + } + this.$message.success('宸叉竻绌�') + this.currentPage0 = 1; + this.getList() + this.rowClick({ + id: this.standardId + }) + }) + }else if(type === 2){ + this.$axios.post(this.$api.standardTree.resetTreeOfHour, { + tree: this.selectTree, + standardId: this.standardId + }).then(res => { + if (res.code == 201) { + return + } + this.$message.success('宸叉竻绌�') + this.currentPage0 = 1; + this.getList() + this.rowClick({ + id: this.standardId + }) + }) + } + }).catch(() => {}) } } } -- Gitblit v1.9.3