From a67fb8cc8644174b16c3cfe8082b7cf61e5b85e9 Mon Sep 17 00:00:00 2001 From: value <z1292839451@163.com> Date: 星期五, 10 五月 2024 09:53:10 +0800 Subject: [PATCH] 复核按钮权限恢复 --- src/components/view/b2-standard.vue | 318 ++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 245 insertions(+), 73 deletions(-) diff --git a/src/components/view/b2-standard.vue b/src/components/view/b2-standard.vue index 9b68b52..755a9c9 100644 --- a/src/components/view/b2-standard.vue +++ b/src/components/view/b2-standard.vue @@ -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,17 +142,17 @@ <!-- </el-col> --> </el-row> <el-row class="standard_table" v-loading="tableLoad"> - <el-table class="el-table" :data="standardList" style="width: 100%;" height="220px" 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> + <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> </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 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> @@ -163,9 +163,10 @@ <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="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,57 +199,61 @@ </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="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-row> </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="6" style="text-align: right;">宸ュ巶锛�</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-input size="small" readonly v-model="addOb.factory"></el-input> + </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 size="small" readonly v-model="addOb.laboratory"></el-input> + </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 size="small" readonly v-model="addOb.sampleType"></el-input> + </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.sample" readonly size="small"></el-input> </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-input v-model="addOb.sample" placeholder="璇疯緭鍏ユ牱鍝佸悕绉�" clearable size="small"></el-input> - </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-input v-model="addOb.model" placeholder="璇疯緭鍏ュ瀷鍙�" clearable size="small"></el-input> @@ -285,6 +290,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> @@ -365,7 +415,11 @@ selectField: {}, }, expandedKeys: [], - filters: [] + filters: [], + sectionUpDia: false, + sectionLoad: false, + sectionRow: null, + sectionList: [] } }, mounted() { @@ -421,7 +475,7 @@ this.$confirm("鏄惁鍒犻櫎璇ュ眰绾�", "鎻愮ず", { type: "error" }).then(() => { - this.treeLoad = true + // this.treeLoad = true this.selectTree = '' this.getNodeParent(node) this.selectTree = this.selectTree.replace(' - ', '') @@ -436,12 +490,23 @@ }).then(res => { if (res.code == 201) return this.$message.success('宸插垹闄�') - this.selectStandardTreeList() + let arr = this.selectTree.split(' - '); + this.deleteStandard(this.list, arr[arr.length - 1]) + // this.selectStandardTreeList() this.selectTree = '' this.standardList = [] this.productList = [] }) }).catch(e => {}) + }, + deleteStandard(arr, label) { + arr.forEach((item, index) => { + if (item.label == label) { + arr.splice(index, 1); + } else { + item.children && this.deleteStandard(item.children, label); + } + }) }, nodeOpen(data, node, el) { $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened') @@ -461,7 +526,7 @@ category: "瀛愬疄楠屽" }).then(res => { this.factory = [] - res.data.forEach(a=>{ + res.data.forEach(a => { this.filters.push({ text: a.label, value: a.value @@ -517,12 +582,7 @@ this.$axios.get(this.$api.standardTree.selectStandardTreeList).then(res => { this.list = res.data this.list.forEach(a => { - a.children.forEach(b => { - b.children.forEach(c => { - this.expandedKeys.push(c.label) - }) - // this.expandedKeys.push(b.label) - }) + this.expandedKeys.push(a.label) }) this.treeLoad = false }) @@ -580,20 +640,12 @@ }) }, 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('鏍峰搧鏄繀濉」') + this.$message.error('浜у搧涓嶅瓨鍦�') + return + } + if (this.addOb.model == null || this.addOb.model == '') { + this.$message.error('璇峰~鍐欏瀷鍙�') return } this.addLoad = true @@ -608,7 +660,15 @@ } this.$message.success('娣诲姞鎴愬姛') this.addDia = false - this.selectStandardTreeList() + 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, + }) this.addLoad = false }).catch(e => { this.addDia = false @@ -715,7 +775,39 @@ 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('宸蹭繚瀛�') }) }, delStandardMethodByFLSSM(id) { @@ -790,7 +882,8 @@ rowClick(row, column, event) { this.tableLoad2 = true this.$axios.post(this.$api.standardTree.selectStandardProductListByMethodId, { - id: row.id + id: row.id, + tree: this.selectTree }).then(res => { this.productList = res.data setTimeout(() => { @@ -827,12 +920,91 @@ this.$message.error('鏈繚瀛�') return } - this.$message.success('宸蹭繚瀛�') + // this.$message.success('宸蹭繚瀛�') }) }, filterHandler(value, row, column) { const property = column['property']; return row[property] === value; + }, + handleAll(e) { + if (e.length > 0) { + this.productList.map(m => { + this.upProductSelect(null, m) + return m + }) + } else { + this.productList.map(m => { + 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 + }) } } } -- Gitblit v1.9.3