From ef48e4b7a4d34e63ffd2cb23c406f4da6eb72ed7 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期二, 14 五月 2024 13:42:26 +0800 Subject: [PATCH] 优化消息管理,标准库管理 --- src/components/view/b2-standard.vue | 302 ++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 268 insertions(+), 34 deletions(-) diff --git a/src/components/view/b2-standard.vue b/src/components/view/b2-standard.vue index 093d106..76219ef 100644 --- a/src/components/view/b2-standard.vue +++ b/src/components/view/b2-standard.vue @@ -58,7 +58,7 @@ } .product_table .el-table { - height: 100%; + height: calc(100% - 35px) !important; } .sort { @@ -78,7 +78,7 @@ } .standard .has-gutter .el-table__cell .cell { - line-height: 38px; + line-height: 34px; background-color: #f8f8f8; } @@ -114,9 +114,9 @@ style="height:calc(100% - 30px);overflow-y: scroll;scrollbar-width: none;"> <div class="custom-tree-node" slot-scope="{ node, data }"> <el-row style="width: 100%;"> - <el-col :span="21" :class="{sort:node.level>3}"> + <el-col :span="21" :class="{sort:node.level>3}" :title="data.label"> <span><i - :class="`node_i ${data.children != undefined ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></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> </el-col> <el-col :span="2" style="text-align: right;" v-if="delStandardTree"> @@ -142,9 +142,9 @@ <!-- </el-col> --> </el-row> <el-row class="standard_table" v-loading="tableLoad"> - <el-table class="el-table" :data="standardList" style="width: 100%;height: 220px !important;overflow-y: auto;" tooltip-effect="dark" + <el-table class="el-table" :data="standardList" style="width: 100%;" height="220" tooltip-effect="dark" highlight-current-row @row-click="rowClick" ref="standard"> - <el-table-column prop="code" label="鏍囧噯缂栧彿" show-overflow-tooltip width="180"> + <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> </template> @@ -161,11 +161,13 @@ </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" + <el-table :data="pagedData" 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"> <el-table-column type="selection" width="65"> </el-table-column> + <el-table-column prop="model" label="鍨嬪彿" min-width="120" 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" @@ -198,12 +200,46 @@ </template> </el-table-column> <el-table-column prop="unit" label="璁¢噺鍗曚綅" width="100" show-overflow-tooltip></el-table-column> - <el-table-column prop="price" label="鍗曚环(鍏�)" width="90" show-overflow-tooltip></el-table-column> - <el-table-column prop="manHour" label="宸ユ椂(H)" width="90" show-overflow-tooltip></el-table-column> + <el-table-column prop="price" label="鍗曚环(鍏�)" width="120"> + <template slot-scope="scope"> + <el-input v-model="scope.row.price" size="small" placeholder="鍗曚环(鍏�)" + @change="(value)=>upStandardProductListOfPrice(value,scope.row.id)" v-if="upStandardProduct"> + </el-input> + <span v-else>{{scope.row.price}}</span> + </template> + </el-table-column> + <el-table-column prop="manHour" label="宸ユ椂绯绘暟" width="120"> + <template slot-scope="scope"> + <el-input v-model="scope.row.manHour" size="small" placeholder="鍗曚环(鍏�)" + @change="(value)=>upStandardProductListOfManHour(value,scope.row.id)" v-if="upStandardProduct"> + </el-input> + <span v-else>{{scope.row.manHour}}</span> + </template> + </el-table-column> <el-table-column prop="manHourGroup" label="宸ユ椂鍒嗙粍" width="100" show-overflow-tooltip></el-table-column> - <el-table-column prop="deviceGroup" label="璁惧缁�" width="120" show-overflow-tooltip></el-table-column> + <el-table-column prop="templateId" label="妯℃澘" width="200"> + <template slot-scope="scope"> + <el-select v-model="scope.row.templateId" size="small" filterable + @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> + </el-table-column> <el-table-column prop="section" label="鍖洪棿" width="120" show-overflow-tooltip></el-table-column> + <el-table-column prop="section" label="鎿嶄綔" width="120"> + <template slot-scope="scope"> + <el-button type="text" @click="sectionUp(scope.row)">鍖洪棿璁剧疆</el-button> + </template> + </el-table-column> </el-table> + <el-pagination + style="position: absolute;right: 16px;bottom: 1px;" + @current-change="handleCurrentChange" + :current-page="currentPage" + :page-size="pageSize" + layout="total, prev, pager, next, jumper" + :total="total"> + </el-pagination> </el-row> </div> <el-dialog title="鍒嗙被娣诲姞" :visible.sync="addDia" width="400px"> @@ -271,6 +307,51 @@ <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%"> + <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"> + </el-table-column> + <el-table-column label="鍖洪棿" align="center"> + <template slot-scope="scope"> + <el-input size="small" v-model="scope.row.thing" clearable placeholder="鍖洪棿"></el-input> + </template> + </el-table-column> + <el-table-column label="瑕佹眰鍊�" align="center"> + <template slot-scope="scope"> + <el-input size="small" v-model="scope.row.ask" clearable placeholder="瑕佹眰鍊�"></el-input> + </template> + </el-table-column> + <el-table-column label="瑕佹眰鎻忚堪" align="center"> + <template slot-scope="scope"> + <el-input size="small" placeholder="瑕佹眰鎻忚堪" v-model="scope.row.tell" clearable type="textarea" + :autosize="{ minRows: 1, maxRows: 2}"></el-input> + </template> + </el-table-column> + <el-table-column label="鍗曚环" align="center" width="120"> + <template slot-scope="scope"> + <el-input size="small" v-model="scope.row.price" clearable placeholder="鍗曚环"></el-input> + </template> + </el-table-column> + <el-table-column label="宸ユ椂绯绘暟" align="center" width="120"> + <template slot-scope="scope"> + <el-input size="small" v-model="scope.row.manHour" clearable placeholder="宸ユ椂绯绘暟"></el-input> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔" width="70" align="center"> + <template slot-scope="scope"> + <el-button size="mini" type="danger" icon="el-icon-minus" circle + @click="sectionList.splice(scope.$index, 1)"></el-button> + </template> + </el-table-column> + </el-table> + </div> + <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> </span> </el-dialog> </div> @@ -351,7 +432,34 @@ selectField: {}, }, expandedKeys: [], - filters: [] + filters: [], + sectionUpDia: false, + sectionLoad: false, + sectionRow: null, + sectionList: [], + templateList: [], + total:0, + pageSize:100, + currentPage:1, + } + }, + computed: { + pagedData() { + const start = (this.currentPage - 1) * this.pageSize; + const end = start + this.pageSize; + return this.productList.slice(start, end); + }, + }, + watch:{ + pagedData:{ + deep:true, + handler(val){ + setTimeout(() => { + val.forEach(a => { + if (a.state == 1) this.toggleSelection(a) + }) + }, 300) + } } }, mounted() { @@ -368,6 +476,7 @@ this.selectEnumByCategoryForSpecial() this.selectEnumByCategoryForInspectionValueType() this.selectEnumByCategoryForSonLaboratory() + this.getStandardTemplate() }, methods: { filterNode(value, data) { @@ -433,10 +542,10 @@ }, deleteStandard(arr, label) { arr.forEach((item, index) => { - if(item.label == label){ + if (item.label == label) { arr.splice(index, 1); - }else{ - item.children&&this.deleteStandard(item.children, label); + } else { + item.children && this.deleteStandard(item.children, label); } }) }, @@ -458,7 +567,7 @@ category: "瀛愬疄楠屽" }).then(res => { this.factory = [] - res.data.forEach(a=>{ + res.data.forEach(a => { this.filters.push({ text: a.label, value: a.value @@ -593,14 +702,14 @@ this.$message.success('娣诲姞鎴愬姛') this.addDia = false this.list - .find(a => a.label == this.addOb.factory).children - .find(a => a.label == this.addOb.laboratory).children - .find(a => a.label == this.addOb.sampleType).children - .find(a => a.label == this.addOb.sample).children.push({ - code:'[5]', - label: this.addOb.model, - value: this.addOb.model, - }) + .find(a => a.label == this.addOb.factory).children + .find(a => a.label == this.addOb.laboratory).children + .find(a => a.label == this.addOb.sampleType).children + .find(a => a.label == this.addOb.sample).children.push({ + code: '[5]', + label: this.addOb.model, + value: this.addOb.model, + }) this.addLoad = false }).catch(e => { this.addDia = false @@ -707,7 +816,55 @@ this.$message.error('鏈繚瀛�') return } - this.$message.success('宸蹭繚瀛�') + // this.$message.success('宸蹭繚瀛�') + }) + }, + upStandardProductListOfPrice(value, index) { + this.$axios.post(this.$api.standardTree.upStandardProductList, { + id: index, + price: value + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code == 201) { + this.$message.error('鏈繚瀛�') + return + } + // this.$message.success('宸蹭繚瀛�') + }) + }, + upStandardProductListOfManHour(value, index) { + this.$axios.post(this.$api.standardTree.upStandardProductList, { + id: index, + manHour: value + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code == 201) { + this.$message.error('鏈繚瀛�') + return + } + // this.$message.success('宸蹭繚瀛�') + }) + }, + upStandardProductListOfTemplate(value, index) { + this.$axios.post(this.$api.standardTree.upStandardProductList, { + id: index, + templateId: value + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code == 201) { + this.$message.error('鏈繚瀛�') + return + } + // this.$message.success('宸蹭繚瀛�') }) }, delStandardMethodByFLSSM(id) { @@ -786,11 +943,12 @@ tree: this.selectTree }).then(res => { this.productList = res.data - setTimeout(() => { - this.productList.forEach(a => { - if (a.state == 1) this.toggleSelection(a) - }) - }, 300) + this.total = this.productList.length; + // setTimeout(() => { + // this.productList.forEach(a => { + // if (a.state == 1) this.toggleSelection(a) + // }) + // }, 300) this.tableLoad2 = false }) }, @@ -807,7 +965,7 @@ return ''; }, upProductSelect(selection, row) { - row.state = row.state == 1 ? 0 : 1 + row.state = (row.state == 1 ? 0 : 1) this.$axios.post(this.$api.standardTree.upStandardProductList, { id: row.id, state: row.state @@ -829,17 +987,93 @@ }, handleAll(e) { if (e.length > 0) { - this.productList.map(m => { + this.productList = this.productList.map(m => { + m.state = 0 this.upProductSelect(null, m) return m }) } else { - this.productList.map(m => { + this.productList = this.productList.map(m => { + m.state = 1 this.upProductSelect(null, m) return m }) } - } + }, + sectionUp(row) { + this.sectionRow = row + this.sectionUpDia = true + this.sectionList = [] + if (this.sectionRow.section != null && this.sectionRow.section != '') { + JSON.parse(this.sectionRow.section).forEach((a, ai) => { + this.sectionList.push({ + thing: a, + ask: JSON.parse(this.sectionRow.ask)[ai], + tell: JSON.parse(this.sectionRow.tell)[ai], + price: JSON.parse(this.sectionRow.price)[ai], + manHour: JSON.parse(this.sectionRow.manHour)[ai] + }) + }) + } + }, + sectionLoadAdd() { + let sectionList = [] + let askList = [] + let tellList = [] + let priceList = [] + let manHourList = [] + this.sectionList.forEach(a => { + if (a.thing !== '') { + sectionList.push(a.thing) + askList.push(a.ask) + tellList.push(a.tell) + priceList.push(a.price) + manHourList.push(a.manHour) + } + }) + if (sectionList.length === 0) { + this.sectionRow.section = null + this.sectionRow.ask = null + this.sectionRow.tell = null + this.sectionRow.price = null + this.sectionRow.manHour = null + } else { + this.sectionRow.section = JSON.stringify(sectionList) + this.sectionRow.ask = JSON.stringify(askList) + this.sectionRow.tell = JSON.stringify(tellList) + this.sectionRow.price = JSON.stringify(priceList) + this.sectionRow.manHour = JSON.stringify(manHourList) + } + this.sectionLoad = true + 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 + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + this.sectionLoad = false + if (res.code == 201) { + this.$message.error('鏈繚瀛�') + return + } + this.$message.success('宸蹭繚瀛�') + this.sectionUpDia = false + }) + }, + getStandardTemplate() { + this.$axios.get(this.$api.StandardTemplate.getStandardTemplate).then(res => { + this.templateList = res.data + }) + }, + handleCurrentChange(val) { + this.currentPage = val; + }, } } </script> -- Gitblit v1.9.3