From 76fa3dff8873461ec6314a998caf4fc6040ed4fa Mon Sep 17 00:00:00 2001 From: 李林 <z1292839451@163.com> Date: 星期五, 01 三月 2024 18:02:17 +0800 Subject: [PATCH] 标准库和枚举调整 --- src/components/view/b2-standard.vue | 305 +++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 262 insertions(+), 43 deletions(-) diff --git a/src/components/view/b2-standard.vue b/src/components/view/b2-standard.vue index da441f9..93c0fbb 100644 --- a/src/components/view/b2-standard.vue +++ b/src/components/view/b2-standard.vue @@ -9,17 +9,133 @@ background-color: white; padding: 15px; } + + .custom-tree-node{ + width: 100%; + line-height: 32px; + } + + .custom-tree-node .el-icon-delete { + color: #3A7BFA; + opacity: 0; + position: relative; + right: 0; + font-size: 16px; + } + + .custom-tree-node:hover .el-icon-delete { + opacity: 1; + } + + .node_i{ + color: orange; + font-size: 18px; + } +</style> +<style> + .standard .el-tree-node__content { + height: 32px; + font-size: 14px; + border-radius: 2px; + } + + .standard .el-tree--highlight-current .el-tree-node.is-current>.el-tree-node__content { + background: rgba(58, 124, 253, 0.1); + color: #3A7BFA; + } </style> <template> <div class="standard"> <div class="left"> - <el-input placeholder="杈撳叆鍏抽敭瀛楄繘琛屾悳绱�" suffix-icon="el-icon-search" v-model="search" size="small" style="margin-bottom: 5px;"></el-input> - <el-tree class="filter-tree" :data="data" :props="defaultProps" default-expand-all - :filter-node-method="filterNode" ref="tree"> + <el-row> + <el-col :span="20"> + <el-input placeholder="杈撳叆鍏抽敭瀛楄繘琛屾悳绱�" suffix-icon="el-icon-search" v-model="search" size="small" + style="margin-bottom: 5px;" clearable @blur="searchFilter" @clear="searchFilter"></el-input> + </el-col> + <el-col :span="4" style="text-align: center;line-height: 30px;" v-if="addPower"> + <el-button type="primary" icon="el-icon-plus" size="mini" circle @click="addDia = true"></el-button> + </el-col> + </el-row> + <el-tree :data="list" ref="tree" default-expand-all :props="{ children: 'children', label: 'label' }" + node-key="id" :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current + @node-expand="nodeOpen" @node-collapse="nodeClose" v-loading="treeLoad"> + <div class="custom-tree-node" slot-scope="{ node, data }"> + <el-row> + <el-col :span="22"> + <span><i :class="`node_i ${data.children != undefined ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i> + {{ data.code }} {{ data.label }}</span> + </el-col> + <el-col :span="2" style="text-align: right;"> + <el-button type="text" size="mini" @click.stop="remove(node, data)"> + <i class="el-icon-delete"></i> + </el-button> + </el-col> + </el-row> + </div> </el-tree> </div> <div class="right"></div> + <el-dialog title="鍒嗙被娣诲姞" :visible.sync="addDia" 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="addOb.factory" size="small" style="width: 100%;" clearable> + <el-option v-for="(a, ai) in factory" :key="ai" :value="a.value" + :label="a.label"></el-option> + </el-select> + </el-col> + </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-select v-model="addOb.laboratory" size="small" style="width: 100%;" clearable> + <el-option v-for="(a, ai) in laboratory" :key="ai" :value="a.value" + :label="a.label"></el-option> + </el-select> + </el-col> + </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-select v-model="addOb.sampleType" size="small" style="width: 100%;" clearable> + <el-option v-for="(a, ai) in sampleType" :key="ai" :value="a.value" + :label="a.label"></el-option> + </el-select> + </el-col> + </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-select v-model="addOb.sample" size="small" style="width: 100%;" clearable> + <el-option v-for="(a, ai) in sample" :key="ai" :value="a.value" + :label="a.label"></el-option> + </el-select> + </el-col> + </el-row> + <el-row style="line-height: 50px;"> + <el-col :span="6" style="text-align: right;"> + 鍨嬪彿锛� + </el-col> + <el-col :span="16" :offset="1"> + <el-input v-model="addOb.model" placeholder="璇疯緭鍏ュ瀷鍙�" clearable size="small"></el-input> + </el-col> + </el-row> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="addDia = false">鍙� 娑�</el-button> + <el-button type="primary" @click="addStandardTree" :loading="addLoad">纭� 瀹�</el-button> + </span> + </el-dialog> </div> </template> @@ -28,54 +144,157 @@ data() { return { search: null, - data: [{ - id: 1, - label: '涓�绾� 1', - children: [{ - id: 4, - label: '浜岀骇 1-1', - children: [{ - id: 9, - label: '涓夌骇 1-1-1' - }, { - id: 10, - label: '涓夌骇 1-1-2' - }] - }] - }, { - id: 2, - label: '涓�绾� 2', - children: [{ - id: 5, - label: '浜岀骇 2-1' - }, { - id: 6, - label: '浜岀骇 2-2' - }] - }, { - id: 3, - label: '涓�绾� 3', - children: [{ - id: 7, - label: '浜岀骇 3-1' - }, { - id: 8, - label: '浜岀骇 3-2' - }] - }], - defaultProps: { - children: 'children', - label: 'label' - } + list: [], + returntree: null, + factory: [], + addDia: false, + addOb: { + factory: null, + laboratory: null, + sampleType: null, + sample: null, + model: null + }, + laboratory: [], + addLoad: false, + sampleType: [], + sample: [], + treeLoad: false, + addPower: false } }, mounted() { - + this.getPower() + this.selectEnumByCategoryForFactory() + this.selectStandardTreeList() + this.obtainItemParameterList() + this.selectEnumByCategoryForsampleType() + this.selectTestObjectByName() }, methods: { filterNode(value, data) { if (!value) return true; return data.label.indexOf(value) !== -1; + }, + searchFilter() { + this.$refs.tree.filter(this.search) + }, + refresh() { + this.upIndex++ + }, + handleNodeClick(val) { //鏍戠殑鍊� + this.returntree = val + if (val.code === '[5]' && val.children === undefined) { + + } + }, + remove(node, data) { + this.$confirm("鏄惁鍒犻櫎", "鎻愮ず", { + type: "warning" + }).then(res => { + const parent = node.parent; + const children = parent.data.children || parent.data; + const index = children.findIndex(d => d.id === data.id); + children.splice(index, 1); + + }).catch(e => {}) + }, + nodeOpen(data, node, el) { + $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened') + }, + nodeClose(data, node, el) { + $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder') + }, + selectEnumByCategoryForFactory() { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "宸ュ巶" + }).then(res => { + this.factory = res.data + }) + }, + selectEnumByCategoryForsampleType() { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "鏍峰搧澶х被" + }).then(res => { + this.sampleType = res.data + }) + }, + selectStandardTreeList(){ + this.treeLoad = true + this.$axios.get(this.$api.standardTree.selectStandardTreeList).then(res=>{ + this.list = res.data + this.treeLoad = false + }) + }, + obtainItemParameterList() { + this.$axios.get(this.$api.laboratoryScope.obtainItemParameterList).then(res => { + let data = [] + res.data.forEach(a=>{ + data.push({ + label: a.laboratoryName, + value: a.laboratoryName + }) + }) + this.laboratory = data + }) + }, + selectTestObjectByName() { + this.$axios.get(this.$api.capacityScope.selectTestObjectByName).then(res => { + let data = [] + res.data.forEach(a=>{ + data.push({ + label: a.specimenName, + value: a.specimenName + }) + }) + this.sample = data + }) + }, + addStandardTree(){ + if(this.addOb.factory==null||this.addOb.factory=='') { + this.$message.error('宸ュ巶鏄繀濉」') + return + } + if(this.addOb.laboratory==null||this.addOb.laboratory=='') { + this.$message.error('瀹為獙瀹ゆ槸蹇呭~椤�') + return + } + if(this.addOb.sampleType==null||this.addOb.sampleType=='') { + this.$message.error('鏍峰搧澶х被鏄繀濉」') + return + } + if(this.addOb.sample==null||this.addOb.sample=='') { + this.$message.error('鏍峰搧鏄繀濉」') + return + } + this.addLoad = true + this.$axios.post(this.$api.standardTree.addStandardTree, this.addOb, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code === 201) { + this.addLoad = false + return + } + this.$message.success('娣诲姞鎴愬姛') + this.addDia = false + this.selectStandardTreeList() + this.addLoad = false + }).catch(e => { + this.addDia = false + this.addLoad = false + }) + }, + getPower(){ + let power = JSON.parse(sessionStorage.getItem('power')) + let add = false + for (var i = 0; i < power.length; i++) { + if(power[i].menuMethod=='addStandardTree'){ + add = true + } + } + this.addPower = add } } } -- Gitblit v1.9.3