src/api/business/productOrder.js
@@ -98,6 +98,14 @@ params: query }) } // 外购下单成品标签打印信息 export function labelOutsideOrderPrinting(query) { return request({ url: '/insOrder/labelOutsideOrderPrinting', method: 'post', data: query }) } // 查询成品标签打印信息 export function labelOrderPrinting(query) { return request({ src/views/CNAS/personnel/personnelInfo/tabs/personnelTraining.vue
@@ -313,6 +313,10 @@ inDetailPlanTableData: [], // 年度计划明细表表数据 inDetailPlanColumn: [ { label: '培训大类', prop: 'trainingCategory', width: '100px', },{ label: '培训目标', prop: 'trainingObjectives', width: '100px', src/views/business/inspectionReview/index.vue
@@ -11,6 +11,13 @@ <el-option v-for="(a, i) in typeSourceList" :key="i" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> <el-form-item label="物料属性" prop="materialProp"> <el-select clearable size="small" v-model="entity.materialProp" style="width: 100%"> <el-option v-for="dict in dict.type.material_prop_type" :key="dict.value" :label="dict.label" :value="dict.value"> </el-option> </el-select> </el-form-item> <el-form-item> <el-button type="primary" size="mini" @click="refreshTable">查询</el-button> <el-button size="mini" @click="refresh">重置</el-button> @@ -61,7 +68,7 @@ onlyoffice, limsTable, }, dicts: ["urgency_level", "inspection_task_state"], dicts: ["urgency_level", "inspection_task_state","material_prop_type"], computed: { ...mapGetters(["nickName", "userId"]), }, @@ -90,6 +97,21 @@ }, { label: "样品名称", prop: "sample", width: "160px" }, { label: '物料属性', prop: 'materialProp', formatData: (params) => { if (!params) return null for (let i = 0; i < this.dict.type.material_prop_type.length; i++) { const item = this.dict.type.material_prop_type[i] if (item.value == params) { return item.label } } return null } }, { label: "下单类别", prop: "typeSource", width: "100px", src/views/business/inspectionTask/index.vue
@@ -13,6 +13,13 @@ :value="a.value"></el-option> </el-select> </el-form-item> <el-form-item label="物料属性" prop="materialProp"> <el-select clearable size="small" v-model="queryParams.materialProp" style="width: 100%"> <el-option v-for="dict in dict.type.material_prop_type" :key="dict.value" :label="dict.label" :value="dict.value"> </el-option> </el-select> </el-form-item> <el-form-item> <el-button size="mini" type="primary" @click="refreshTable()">查询</el-button> <el-button size="mini" @click="refresh()">重置</el-button> @@ -251,7 +258,7 @@ viewManHourDia, UnPassRetestResult }, dicts: ["urgency_level", "inspection_task_state"], dicts: ["urgency_level", "inspection_task_state","material_prop_type"], computed: { ...mapGetters(["nickName", "userId"]), }, @@ -353,6 +360,21 @@ }, { label: "样品名称", prop: "sample", width: "160px" }, { label: '物料属性', prop: 'materialProp', formatData: (params) => { if (!params) return null for (let i = 0; i < this.dict.type.material_prop_type.length; i++) { const item = this.dict.type.material_prop_type[i] if (item.value == params) { return item.label } } return null } }, { label: "下单类别", prop: "typeSource", width: "100px", src/views/business/materialOrder/index.vue
@@ -23,35 +23,42 @@ @keyup.enter.native="goSearch"> </el-input> </el-form-item> <el-form-item> <el-button v-if="tabIndex === 2 || tabIndex === 3 || tabIndex === 4" :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" style="color: #3A7BFA;" type="text" @click="more = !more">{{ !more ? '更多' : '收起' }}</el-button> <el-button size="mini" type="primary" @click="goSearch">查询</el-button> <el-button size="mini" @click="refresh()">重置</el-button> </el-form-item> <el-form-item label="供应商名称" prop="supplierName" v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more"> v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more"> <el-input v-model="entity.supplierName" clearable placeholder="请输入" size="small" @keyup.enter.native="goSearch"> @keyup.enter.native="goSearch"> </el-input> </el-form-item> <el-form-item label="物料属性" prop="materialProp"> <el-select clearable size="small" v-model="entity.materialProp" style="width: 100%"> <el-option v-for="dict in dict.type.material_prop_type" :key="dict.value" :label="dict.label" :value="dict.value"> </el-option> </el-select> </el-form-item> <el-form-item label="样品型号" prop="sampleModel" v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more"> v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more"> <el-input v-model="entity.sampleModel" clearable placeholder="请输入" size="small" @keyup.enter.native="goSearch"> @keyup.enter.native="goSearch"> </el-input> </el-form-item> <el-form-item label="检验状态" prop="inspectStatus" v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more"> v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more"> <el-select v-model="entity.inspectStatus" clearable size="small" @change="goSearch"> <el-option v-for="(a, i) in inspectStatusList" :key="i" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> <el-form-item label="报检时间" prop="date" v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more"> <el-date-picker v-model="entity.date" end-placeholder="结束日期" format="yyyy-MM-dd" placeholder="选择日期" @change="goSearch" range-separator="至" size="small" start-placeholder="开始日期" type="daterange" value-format="yyyy-MM-dd"> range-separator="至" size="small" start-placeholder="开始日期" type="daterange" value-format="yyyy-MM-dd"> </el-date-picker> </el-form-item> <el-form-item> <el-button v-if="tabIndex === 2 || tabIndex === 3 || tabIndex === 4" :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" style="color: #3A7BFA;" type="text" @click="more = !more">{{ !more ? '更多' : '收起' }}</el-button> <el-button size="mini" type="primary" @click="goSearch">查询</el-button> <el-button size="mini" @click="refresh()">重置</el-button> </el-form-item> </el-form> </div> @@ -212,15 +219,32 @@ name: "MaterialOrder", // import 引入的组件需要注入到对象中才能使用 components: { limsTable, DownFileDialog, FilesLookVisible, DataLookVisible, ShowInfo, PrintDialog }, dicts: ['material_prop_type'], data() { // 这里存放数据 return { materialProps: [], tableData: [], tableLoading: false, column: [ { label: '批号', prop: 'updateBatchNo' }, { label: '零件号', prop: 'partNo' }, { label: '零件描述', prop: 'partDesc' }, { label: '物料属性', prop: 'materialProp', formatData: (params) => { if (!params) return null for (let i = 0; i < this.dict.type.material_prop_type.length; i++) { const item = this.dict.type.material_prop_type[i] if (item.value == params) { return item.label } } return null } }, { dataType: 'tag', label: '物料类型', @@ -301,6 +325,21 @@ { label: '样品型号', prop: 'sampleModel' }, { label: '检验人', prop: 'userName' }, { label: '下发时间', prop: 'sendTime' }, { label: '物料属性', prop: 'materialProp', formatData: (params) => { if (!params) return null for (let i = 0; i < this.dict.type.material_prop_type.length; i++) { const item = this.dict.type.material_prop_type[i] if (item.value == params) { return item.label } } return null } }, { dataType: 'tag', label: '物料类型', @@ -440,6 +479,21 @@ }, { label: '样品型号', prop: 'sampleModel' }, { label: '检验人', prop: 'userName' }, { label: '物料属性', prop: 'materialProp', formatData: (params) => { if (!params) return null for (let i = 0; i < this.dict.type.material_prop_type.length; i++) { const item = this.dict.type.material_prop_type[i] if (item.value == params) { return item.label } } return null } }, { dataType: 'tag', label: '物料类型', @@ -627,6 +681,21 @@ { label: '样品型号', prop: 'sampleModel' }, { label: '检验人', prop: 'userName' }, { label: '物料属性', prop: 'materialProp', formatData: (params) => { if (!params) return null for (let i = 0; i < this.dict.type.material_prop_type.length; i++) { const item = this.dict.type.material_prop_type[i] if (item.value == params) { return item.label } } return null } }, { dataType: 'tag', label: '物料类型', prop: 'isExpire', @@ -751,6 +820,21 @@ { label: '样品型号', prop: 'sampleModel' }, { label: '检验人', prop: 'userName' }, { label: '物料属性', prop: 'materialProp', formatData: (params) => { if (!params) return null for (let i = 0; i < this.dict.type.material_prop_type.length; i++) { const item = this.dict.type.material_prop_type[i] if (item.value == params) { return item.label } } return null } }, { dataType: 'tag', label: '物料类型', prop: 'isExpire', @@ -827,6 +911,7 @@ date: null, beginDeclareDate: null, endDeclareDate: null, materialProp: null, }, tabList: [ { src/views/business/outsourcingFinishProduct/components/printDialog.vue
@@ -1,60 +1,67 @@ <template> <div> <el-dialog :visible.sync="isShow" title="标签打印" top="5vh" width="600px" @close="$emit('closePrintDialog')"> <el-dialog title="标签打印" :visible.sync="isShow" width="600px" top="5vh" @close="$emit('closePrintDialog')"> <div style="width:100%;height: 400px;overflow-y: auto;text-align: left"> <div class="dia_body"> <el-checkbox v-model="checkAll" :indeterminate="isIndeterminate" style="margin: 10px 5px;" @change="handleCheckAllChange">全选</el-checkbox> <el-checkbox-group v-model="checkIndexList" @change="changePrintCode()"> <el-card v-for="(item, i) in barcodeData" :key="i" class="box-card" style="margin-bottom: 15px; font-size: 16px !important;"> <el-checkbox :key="i" :label="i" style="position: relative;top:0;left:10px"><br></el-checkbox> <el-checkbox style="margin: 10px 5px;" :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全选</el-checkbox> <el-checkbox-group @change="changePrintCode()" v-model="checkIndexList"> <el-card class="box-card" v-for="(item, i) in barcodeData" :key="i" style="margin-bottom: 15px; font-size: 16px !important;"> <el-checkbox :label="i" :key="i" style="position: relative;top:0;left:10px"><br></el-checkbox> <div> <div class="titleH1" style="text-align: center; margin-bottom: 2px;font-size: 16px">检测中心样品标识卡</div> <div style="text-align: center;"> <barcode :displayValue="false" :height="34" :value="item.barcode" :width="2"></barcode> </div> <div style="margin-left: 20px;text-align: left"> <div class="item"> <span class="full-title">样品名称</span>: <span class="info">{{ item.sampleView }}</span> <div style="text-align: center; margin-bottom: 2px;font-size: 22px;font-weight: bold;">成品检测</div> <div style="text-align: center; margin-bottom: 2px;font-size: 16px;font-weight: bold;">{{ item.partDesc }}</div> <div style="display: flex; align-items: center;"> <div style="flex: 0 0 45%; text-align: center;"> <vueQr :text="getQrCodeText(item)" :size="160" :margin="2"></vueQr> <div style="margin-top: 5px; font-size: 14px;"> <span class="print-person-label">打印人</span> <span style="margin-left: 20px; font-weight: bold;">{{ nickName }}</span> </div> </div> <div class="item"> <span class="full-title">生产单位</span>: <span class="info">{{ item.production }}</span> </div> <div class="item2"> <span class="full-title">规格型号</span>: <span class="info">{{ item.sampleModel }}</span> </div> <div class="item"> <span class="full-title">委托日期</span>: <span class="info">{{ item.sendTime }}</span> </div> <div class="item"> <span class="full-title">委托人</span>: <span class="info2">{{ item.prepareUser }}</span> <span class="full-title">检测编号</span>: <span class="info">{{ item.entrustCode }}</span> </div> <div class="item"> <span class="full-title">样品数量</span>: <span class="info2">{{ item.testQuantity }}</span> </div> <div style="font-weight: bold;display: flex;align-items: center;"> <span class="full-title">样品状态</span>: <el-radio-group v-model="item.insState" v-removeAriaHidden style="margin-top: 7px;margin-left: 4px;"> <el-radio :label="0" style="font-weight: bold;margin-right: 7px;">待检</el-radio> <el-radio :label="1" style="font-weight: bold;margin-right: 7px;">在检</el-radio> <el-radio :label="2" style="font-weight: bold;margin-right: 7px;">已检</el-radio> </el-radio-group> <span> <el-radio v-model="item.isLeave" :label="true" size="small" style="margin-left: 14px;margin-top: 3px;" @click.native.prevent="changeIsLeave(item)">留样</el-radio> </span> <div style="flex: 1; margin-left: 10px;text-align: left"> <div class="item"> <span class="full-title">SN号</span> <span class="info">{{ item.lotBatchNo }}</span> </div> <div class="item"> <span class="full-title">绝缘颜色</span> <span class="info">{{ item.insulationColor }}</span> </div> <div class="item2"> <span class="full-title">护套颜色</span> <span class="info">{{ item.outerColor }}</span> </div> <div class="item"> <span class="full-title">载具编号</span> <span class="info">{{ item.drumNo }}</span> </div> <div class="item"> <span class="full-title">起止米标</span> <span class="info">{{ item.startMeterMark }} - {{ item.endMeterMark }}</span> </div> <div class="item"> <span class="full-title">长度(km)</span> <span class="info">{{ calcInbondLength(item.startMeterMark, item.endMeterMark) }}</span> </div> <div class="item"> <span class="full-title">检测人员</span> <span class="info">{{ item.inspectorName }}</span> </div> <div class="item"> <span class="full-title">检测结论</span> <span class="info">{{ formatData(item.insState) }}</span> </div> <div class="item"> <span class="full-title">入库时间</span> <span class="info">{{ item.updateTime }}</span> </div> <div class="item"> <span class="full-title">零件号</span> <span class="info">{{ item.partNo }}</span> </div> </div> </div> </div> @@ -69,49 +76,63 @@ </el-row> </span> </el-dialog> <div class="el-dialog-body" style="overflow-y: auto;margin-top: 0;position: fixed;top: 20px;right: 10px;z-index: 99999;"> <div id="printOrder" ref="printOrder" class="printOrder"> <el-card v-for="(item, i) in checkDataList" :key="i" class="box-card" style="font-size: 0.29cm !important;font-weight: 700;page-break-after: always;color: #000;box-shadow: none;margin: 0 !important;padding: 0 !important;"> <div class="el-dialog-body" style="overflow-y: auto;margin-top: 0;position: fixed;top: 20px;right: 10px;z-index: 99999;width: 500px;"> <div id="printOrder" class="printOrder" ref="printOrder"> <el-card class="box-card" v-for="(item, i) in checkDataList" :key="i" style="font-size: 0.29cm !important;font-weight: 700;page-break-after: always;color: #000;box-shadow: none;margin: 0 !important;padding: 0 !important;"> <div> <div class="titleH1" style="text-align: center;margin-bottom: 1px">检测中心样品标识卡</div> <div style="text-align: center;"> <barcode :displayValue="false" :height="22" :value="item.barcode" :width="1.6"></barcode> </div> <div style="margin-left: 12px;text-align: left"> <div class="item"> <span class="full-title4">样品名称:</span> <span class="info4">{{ item.sampleView }}</span> <div class="titleH1" style="text-align: center;margin-bottom: 1px">成品检测</div> <div class="titleH1" style="text-align: center;margin-bottom: 1px">{{ item.partDesc }}</div> <div style="display: flex; align-items: center;"> <div style="flex: 0 0 45%; text-align: center;"> <vueQr :text="getQrCodeText(item)" :size="160" :margin="2"></vueQr> <div style="margin-top: 5px;"> <span class="print-person-label">打印人</span> <span style="margin-left: 20px; font-weight: bold;">{{ nickName }}</span> </div> </div> <div class="item"> <span class="full-title2">生产单位</span>: <span class="info">{{ item.production }}</span> </div> <div class="item2"> <span class="full-title4">规格型号:</span> <span class="info4">{{ item.sampleModel }}</span> </div> <div class="item"> <span class="full-title2">委托日期</span>: <span class="info">{{ item.sendTime }}</span> </div> <div class="item"> <span class="full-title2">委托人</span>: <span class="info3">{{ item.prepareUser }}</span> <span class="full-title2">检测编号</span>: <span class="info">{{ item.entrustCode }}</span> </div> <div class="item"> <span class="full-title2">样品数量</span>: <span class="info3">{{ item.testQuantity }}</span> </div> <div> <span class="full-title2">样品状态</span>: <span style="white-space: nowrap;margin-left: 2px"> 待检<span v-if="item.insState!==0" class="scor"></span><span v-if="item.insState===0" class="checked">√</span> 在检<span v-if="item.insState!==1" class="scor"></span><span v-if="item.insState===1" class="checked">√</span> 已检<span v-if="item.insState!==2" class="scor"></span><span v-if="item.insState===2" class="checked">√</span> 留样<span v-if="!item.isLeave" class="scor"></span><span v-if="item.isLeave" class="checked">√</span> </span> <div style="flex: 1; margin-left: 5px;text-align: left"> <div class="item"> <span class="full-title">SN号</span> <span class="info">{{ item.lotBatchNo }}</span> </div> <div class="item"> <span class="full-title">绝缘颜色</span> <span class="info">{{ item.insulationColor }}</span> </div> <div class="item2"> <span class="full-title">护套颜色</span> <span class="info">{{ item.outerColor }}</span> </div> <div class="item"> <span class="full-title">载具编号</span> <span class="info">{{ item.drumNo }}</span> </div> <div class="item"> <span class="full-title">起止米标</span> <span class="info">{{ item.startMeterMark }} - {{ item.endMeterMark }}</span> </div> <div class="item"> <span class="full-title">长度(km)</span> <span class="info">{{ calcInbondLength(item.startMeterMark, item.endMeterMark) }}</span> </div> <div class="item"> <span class="full-title">检测人员</span> <span class="info">{{ item.inspectorName }}</span> </div> <div class="item"> <span class="full-title">检测结论</span> <span class="info">{{ formatData(item.insState) }}</span> </div> <div class="item"> <span class="full-title">入库时间</span> <span class="info">{{ item.updateTime }}</span> </div> <div class="item"> <span class="full-title">零件号</span> <span class="info">{{ item.partNo }}</span> </div> </div> </div> </div> @@ -123,17 +144,25 @@ <script> import PrintJS from "print-js"; import {labelOrderPrinting} from "@/api/business/productOrder"; import vueQr from "vue-qr"; import { labelOutsideOrderPrinting } from "@/api/business/productOrder"; import { mapGetters } from "vuex"; export default { name: "printDialog", // import 引入的组件需要注入到对象中才能使用 components: {}, // 2. 在这里注册组件 components: { vueQr }, props: { printDialog: { type: Boolean, default: () => false }, }, computed: { ...mapGetters(["nickName"]), }, data() { // 这里存放数据 @@ -158,17 +187,17 @@ selection.map(m => { ids.push(m.id) }) labelOrderPrinting({ ids: ids }).then(res => { labelOutsideOrderPrinting({ ids: ids }).then(res => { if (res.code === 200 && res.data.length > 0) { res.data.forEach(item => { console.log('item---', item) item.sendTime = item.sendTime && item.sendTime.substring(0, 10) item.sampleNumber = item.qtyArrived + item.buyUnitMeas this.$set(item, 'barcode', item.entrustCode) this.$set(item, 'isLeave', item.insState === '2') this.$set(item, 'isLeave', item.labelStatus === '2') }) this.barcodeData = res.data console.log('barcodeData---', this.barcodeData) } }) } catch (e) { @@ -176,10 +205,27 @@ } }, changeIsLeave(item) { const index = this.barcodeData.findIndex(val => val.entrustCode === item.entrustCode) if (index > -1) { this.barcodeData[index].isLeave = !this.barcodeData[index].isLeave calcInbondLength(startMeterMark, endMeterMark) { let inboundLength = null; if ((startMeterMark != null && startMeterMark !== '') && (endMeterMark != null && endMeterMark !== '')) { let minus = this.$Big(endMeterMark).minus(this.$Big(startMeterMark)); inboundLength = Math.abs(minus) } return inboundLength; }, formatData(params) { if (params == 0) { return '检验中' } else if (params == 1) { return '合格' } else if (params == 2) { return '不合格' } else if (params == 3) { return '未下单' } else if (params == 4) { return '让步放行' } else { return null } }, // 全选多选框回调 @@ -197,6 +243,17 @@ }, changeType(type) { type = type === '1' ? '0' : '1' }, // 生成二维码内容 getQrCodeText(item) { const data = { sn_no: item.lotBatchNo, vehicle_no: item.drumNo, qty_arrived: this.calcInbondLength(item.startMeterMark, item.endMeterMark), lot_batch_no: item.lotBatchNo, part_no: item.partNo, }; return JSON.stringify(data, null, 2); }, //选择要打印的二维码 changePrintCode() { @@ -238,7 +295,7 @@ } @media print{ width: 400px; height: 75px; height: 800px; margin:0; }`, onPrintDialogClose: this.erexcel = false, @@ -261,56 +318,70 @@ <style scoped> .item { margin-bottom: 4px; margin-bottom: 2px; line-height: 1.2; } .item2 { margin-bottom: 8px; margin-bottom: 2px; vertical-align: top; line-height: 1.2; } .full-title { display: inline-block; width: 80px; width: 70px; text-align-last: justify; text-align: justify; font-weight: bold; } /* For the print section which might use smaller font */ .full-title2 { display: inline-block; width: 50px; width: 60px; text-align-last: justify; text-align: justify; font-weight: bold; } .full-title4 { display: inline-block; width: 53px; width: 60px; text-align-last: justify; text-align: justify; vertical-align: top; font-weight: bold; } .info { margin-left: 2px; margin-left: 15px; font-weight: bold; } .info2 { margin-left: 2px; margin-right: 30px; width: 80px; margin-left: 15px; margin-right: 10px; width: auto; display: inline-block; font-weight: bold; } .info3 { margin-left: 2px; margin-right: 8px; width: 44px; margin-left: 15px; margin-right: 10px; width: auto; display: inline-block; font-weight: bold; } .info4 { display: inline-block; margin-left: 2px; margin-left: 15px; white-space: normal; width: 260px; width: 200px; font-weight: bold; vertical-align: top; } .checkboxInfo { @@ -331,17 +402,26 @@ .checked { margin-right: 14px; margin-left: 4px; font-weight: bold; } >>> .el-checkbox { .print-person-label { display: inline-block; width: 50px; text-align-last: justify; text-align: justify; font-weight: bold; } >>>.el-checkbox { margin-right: 10px; } >>> .el-card { >>>.el-card { border: none; } >>> .el-card__body { >>>.el-card__body { padding: 4px 2px 6px 14px; } </style> src/views/business/outsourcingFinishProduct/index.vue
@@ -23,19 +23,18 @@ @keyup.enter.native="goSearch"> </el-input> </el-form-item> <el-form-item label="物料属性" prop="materialProp"> <el-select clearable size="small" v-model="entity.materialProp" style="width: 100%"> <el-option v-for="dict in dict.type.material_prop_type" :key="dict.value" :label="dict.label" :value="dict.value"> </el-option> </el-select> </el-form-item> <el-form-item label="供应商名称" prop="supplierName" > <el-input v-model="entity.supplierName" clearable placeholder="请输入" size="small" @keyup.enter.native="goSearch"> </el-input> </el-form-item> <el-form-item> <el-button v-if="tabIndex === 2 || tabIndex === 3 || tabIndex === 4" :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" style="color: #3A7BFA;" type="text" @click="more = !more">{{ !more ? '更多' : '收起' }}</el-button> <el-button size="mini" type="primary" @click="goSearch">查询</el-button> <el-button size="mini" @click="refresh()">重置</el-button> </el-form-item> <el-form-item label="样品型号" prop="sampleModel" v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more"> <el-input v-model="entity.sampleModel" clearable placeholder="请输入" size="small" @@ -52,6 +51,13 @@ <el-date-picker v-model="entity.date" end-placeholder="结束日期" format="yyyy-MM-dd" placeholder="选择日期" @change="goSearch" range-separator="至" size="small" start-placeholder="开始日期" type="daterange" value-format="yyyy-MM-dd"> </el-date-picker> </el-form-item> <el-form-item> <el-button v-if="tabIndex === 2 || tabIndex === 3 || tabIndex === 4" :icon="!more ? 'el-icon-arrow-down' : 'el-icon-arrow-up'" style="color: #3A7BFA;" type="text" @click="more = !more">{{ !more ? '更多' : '收起' }}</el-button> <el-button size="mini" type="primary" @click="goSearch">查询</el-button> <el-button size="mini" @click="refresh()">重置</el-button> </el-form-item> </el-form> </div> @@ -176,7 +182,7 @@ </template> <script> import PrintDialog from "@/views/business/materialOrderComponents/materialOrder/printDialog.vue"; import PrintDialog from "@/views/business/outsourcingFinishProduct/components/printDialog.vue"; import ShowInfo from "@/views/business/materialOrderComponents/materialOrder/showInfo.vue"; import DataLookVisible from "@/views/business/materialOrderComponents/materialOrder/dataLookVisible.vue"; import FilesLookVisible from "@/views/business/materialOrderComponents/materialOrder/filesLookVisible.vue"; @@ -197,6 +203,7 @@ export default { name: "MaterialOrder", dicts: ['material_prop_type'], // import 引入的组件需要注入到对象中才能使用 components: { limsTable, DownFileDialog, FilesLookVisible, DataLookVisible, ShowInfo, PrintDialog }, data() { @@ -208,6 +215,21 @@ { label: '批号', prop: 'updateBatchNo' }, { label: '零件号', prop: 'partNo' }, { label: '零件描述', prop: 'partDesc' }, { label: '物料属性', prop: 'materialProp', formatData: (params) => { if (!params) return null for (let i = 0; i < this.dict.type.material_prop_type.length; i++) { const item = this.dict.type.material_prop_type[i] if (item.value == params) { return item.label } } return null } }, { dataType: 'tag', label: '物料类型', @@ -288,6 +310,21 @@ { label: '样品型号', prop: 'sampleModel' }, { label: '检验人', prop: 'userName' }, { label: '下发时间', prop: 'sendTime' }, { label: '物料属性', prop: 'materialProp', formatData: (params) => { if (!params) return null for (let i = 0; i < this.dict.type.material_prop_type.length; i++) { const item = this.dict.type.material_prop_type[i] if (item.value == params) { return item.label } } return null } }, { dataType: 'tag', label: '物料类型', @@ -427,6 +464,21 @@ }, { label: '样品型号', prop: 'sampleModel' }, { label: '检验人', prop: 'userName' }, { label: '物料属性', prop: 'materialProp', formatData: (params) => { if (!params) return null for (let i = 0; i < this.dict.type.material_prop_type.length; i++) { const item = this.dict.type.material_prop_type[i] if (item.value == params) { return item.label } } return null } }, { dataType: 'tag', label: '物料类型', @@ -599,6 +651,21 @@ { label: '样品型号', prop: 'sampleModel' }, { label: '检验人', prop: 'userName' }, { label: '物料属性', prop: 'materialProp', formatData: (params) => { if (!params) return null for (let i = 0; i < this.dict.type.material_prop_type.length; i++) { const item = this.dict.type.material_prop_type[i] if (item.value == params) { return item.label } } return null } }, { dataType: 'tag', label: '物料类型', prop: 'isExpire', @@ -658,6 +725,7 @@ date: null, beginDeclareDate: null, endDeclareDate: null, materialProp: null }, tabList: [ { src/views/business/productOrder/components/auxiliaryWireCore.vue
@@ -16,6 +16,10 @@ <el-option v-for="item in quantityList" :key="item.value" :label="item.label" :value="item.value"></el-option> </el-select> </el-form-item> <el-form-item label="型号参数" prop="modelNum"> <el-input v-model="auxiliaryWireCore.modelNum" placeholder="非必填" size="small" @input="methodChange(auxiliaryWireCore.standardMethodListId)"></el-input> </el-form-item> <el-form-item label="检验标准" prop="standardMethodListId"> <el-select v-model="auxiliaryWireCore.standardMethodListId" disabled placeholder="请选择检验标准" size="small" @@ -308,7 +312,8 @@ const cores = this.sampleSelectionList[0].cores const conductorMaterial = this.sampleSelectionList[0].conductorMaterial const conductorType = this.sampleSelectionList[0].conductorType const modelNum = this.sampleSelectionList[0].modelNum // const modelNum = this.sampleSelectionList[0].modelNum const modelNum = this.auxiliaryWireCore.modelNum selectStandardProductList({ model: this.$parent.addObj.model ? this.$parent.addObj.model : model, modelNum: modelNum, src/views/business/rawMaterialInspection/index.vue
@@ -97,6 +97,11 @@ <el-option v-for="(item,index) in orderTypeList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option> </el-select> </el-form-item> <el-form-item class="declareObj-form-item" label="物料属性:" prop="materialProp"> <el-select v-model="declareBatchObj.materialProp" clearable size="small"> <el-option v-for="(item,index) in materialPropList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option> </el-select> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> <el-row> @@ -157,6 +162,11 @@ <el-form-item class="declareObj-form-item" label="销售订单分类:" prop="orderType"> <el-select v-model="declareObj.orderType" clearable size="small"> <el-option v-for="(item,index) in orderTypeList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option> </el-select> </el-form-item> <el-form-item class="declareObj-form-item" label="物料属性:" prop="materialProp"> <el-select v-model="declareObj.materialProp" clearable size="small"> <el-option v-for="(item,index) in materialPropList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option> </el-select> </el-form-item> </el-form> @@ -264,9 +274,20 @@ </el-table> </div> <span slot="footer" class="dialog-footer"> <el-button @click="resetOrderSplitData()" :disabled="confirmSplitOrderLoading">取 消</el-button> <el-button type="primary" @click="confirmSplitOrder()" :loading="confirmSplitOrderLoading">确 定</el-button> </span> <el-button @click="resetOrderSplitData()" :disabled="confirmSplitOrderLoading">取 消</el-button> <el-button type="primary" @click="beforeConfirmSplitOrder()" :loading="confirmSplitOrderLoading">确 定</el-button> </span> </el-dialog> <el-dialog title="选择物料属性" :visible.sync="materialPropVisible" width="15%"> <el-select placeholder="请选择物料属性" v-model="declareObj.materialProp" clearable size="small"> <el-option v-for="(item,index) in materialPropList" :value="item.dictValue" :label="item.dictLabel" :key="index"></el-option> </el-select> <span slot="footer" class="dialog-footer"> <el-button type="primary" @click="confirmSplitOrder">确 定</el-button> </span> </el-dialog> </div> </template> @@ -301,12 +322,17 @@ data() { // 这里存放数据 return { materialPropVisible:false, declareBatchObj:{ orderType:'' orderType:'', materialProp:'' }, declareObjBatchRules:{ orderType: [ { required: true, message: '请选择销售订单分类', trigger: 'change' } ], materialProp: [ { required: true, message: '请选择物料属性', trigger: 'change' } ], }, confirmSplitOrderLoading: false, @@ -580,6 +606,7 @@ buyUnitMeas: '', // 单位 isExpire: '', // 单位 orderType: null, // 销售订单分类 materialProp: null, // 物料属性 }, componentData: { // 表格数据 updateBatchNo: null, @@ -629,6 +656,9 @@ orderType: [ { required: true, message: '请选择销售订单分类', trigger: 'change' } ], materialProp: [ { required: true, message: '请选择物料属性', trigger: 'change' } ], }, tabList: [ { @@ -664,11 +694,13 @@ outLoading: false, upLoading: false, orderTypeList: [], materialPropList: [], } }, mounted() { this.refreshTable() this.getOrderTypeList() this.getMaterialPropList() }, // 方法集合 methods: { @@ -676,6 +708,16 @@ getDicts('inspection_type').then(res=>{ if(res.code === 200){ this.orderTypeList = res.data } }).catch(error=>{ console.error(error) }) }, //获取物料属性字典项 getMaterialPropList(){ getDicts('material_prop_type').then(res=>{ if(res.code === 200){ this.materialPropList = res.data } }).catch(error=>{ console.error(error) @@ -691,16 +733,31 @@ this.refreshTable() }) }, //确认拆分订单前,选择订单的物料属性 beforeConfirmSplitOrder(){ console.log(this.declareObj.materialProp) if(!this.declareObj.materialProp){ this.materialPropVisible = true }else{ this.confirmSplitOrder() } }, confirmSplitOrder(){ if(this.orderSplitDetailData.length===0){ this.$message.error('请先导入拆分数据') return } if(!this.declareObj.materialProp){ this.$message.warning("请选择物料属性") return } this.materialPropVisible = false this.confirmSplitOrderLoading = true let requestData = { ifsId: this.declareObj.id, splitDetailList: this.orderSplitDetailData, pushToMes: this.pushToMes pushToMes: this.pushToMes, materialProp: this.declareObj.materialProp } confirmSplitOrder(requestData).then(res=>{ if(res.code===200 && res.data){ @@ -945,7 +1002,8 @@ this.declareDialogSVisible = true inspectionReport({ ids: ids, orderType: this.declareBatchObj.orderType orderType: this.declareBatchObj.orderType, materialProp: this.declareBatchObj.materialProp }).then(res => { if (res.code === 200) { this.declareDialogSVisible = false @@ -1004,7 +1062,8 @@ inspectionReportOne({ id: this.declareObj.id, updateBatchNo: this.declareObj.updateBatchNo, orderType: this.declareObj.orderType orderType: this.declareObj.orderType, materialProp: this.declareObj.materialProp }).then(res => { if (res.code === 200) { this.declareDialogVisible = false src/views/business/reportPreparation/index.vue
@@ -16,6 +16,13 @@ <el-option v-for="(a, i) in typeSourceList" :key="i" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> <el-form-item label="物料属性" prop="materialProp"> <el-select clearable size="small" v-model="entity.materialProp" style="width: 100%"> <el-option v-for="dict in dict.type.material_prop_type" :key="dict.value" :label="dict.label" :value="dict.value"> </el-option> </el-select> </el-form-item> <el-form-item label="检验类别" prop="orderType"> <el-select v-model="entity.orderType" clearable size="small" @change="refreshTable()"> <el-option v-for="(a, i) in orderTypeList" :key="i" :label="a.label" :value="a.value"></el-option> @@ -213,6 +220,7 @@ export default { name: 'ReportPreparation', components: { limsTable, onlyoffice }, dicts: ['material_prop_type'], data() { return { entity: { @@ -220,6 +228,7 @@ code: null, typeSource: null, orderType: null, materialProp: null }, page: { current: 1, @@ -363,6 +372,21 @@ }, }, { label: '物料属性', prop: 'materialProp', formatData: (params) => { if (!params) return null for (let i = 0; i < this.dict.type.material_prop_type.length; i++) { const item = this.dict.type.material_prop_type[i] if (item.value == params) { return item.label } } return null } }, { label: "检验类型", prop: "orderType", width: "100px", src/views/performance/manHour/workTimeManagement.vue
@@ -681,6 +681,7 @@ this.formData.approvedWorkingHour = ""; this.formData.nonproductiveTime = ""; this.formData.auxiliaryProject = ""; this.addVisible = false; this.refreshTable("page"); // this.collectWorkingHours(); }); src/views/standard/standardLibrary/index.vue
@@ -1,27 +1,28 @@ <template> <div class="standard"> <div class="left"> <el-row> <el-col :span="20"> <el-input v-model="search" clearable placeholder="输入关键字进行搜索" size="small" style="margin-bottom: 5px" suffix-icon="el-icon-search" @blur="searchFilter" @clear="searchFilter"></el-input> </el-col> <el-col v-if="checkPermi(['standard:standardLibrary:add'])" :span="4" style="text-align: center; line-height: 30px"> <el-button circle icon="el-icon-plus" size="mini" type="primary" @click="addDia = true"></el-button> </el-col> </el-row> <el-tree ref="tree" v-loading="treeLoad" :allow-drop="allowDrop" :data="list" :default-expanded-keys="expandedKeys" :draggable="true" :filter-node-method="filterNode" :props="{ children: 'children', label: 'label' }" highlight-current node-key="label" style=" height: calc(100% - 30px); overflow-y: scroll; scrollbar-width: none; " @node-click="handleNodeClick" @node-drop="handleDrop"> <div slot-scope="{ node, data }" class="custom-tree-node"> <el-row style="width: 100%"> <el-col :class="{ sort: node.level > 3 }" :span="19" :title="data.label" style="text-align: left"> <div class="app-container"> <el-row :gutter="20"> <splitpanes :horizontal="this.$store.getters.device === 'mobile'" class="default-theme"> <!--部门数据--> <pane size="12"> <el-col> <div class="head-container addButton"> <el-input v-model="search" clearable placeholder="输入关键字进行搜索" size="small" style="margin-bottom: 5px" suffix-icon="el-icon-search" @keydown.enter.native="searchFilter" @blur="searchFilter" @clear="searchFilter"></el-input> <el-button circle icon="el-icon-plus" size="mini" type="primary" @click="addDia = true"></el-button> </div> <div class="head-container"> <el-tree ref="tree" v-loading="treeLoad" :allow-drop="allowDrop" :data="list" :default-expanded-keys="expandedKeys" :draggable="true" :filter-node-method="filterNode" :props="{ children: 'children', label: 'label' }" highlight-current node-key="label" style=" height: calc(100vh - 173px); overflow-y: scroll; scrollbar-width: none;" @node-click="handleNodeClick" @node-drop="handleDrop"> <div slot-scope="{ node, data }" class="custom-tree-node"> <el-row style="width: 100%"> <el-col :class="{ sort: node.level > 3 }" :span="19" :title="data.label" style="text-align: left"> <span> <i :class="`node_i ${data.children != undefined ? data.code === '[1]' @@ -31,162 +32,169 @@ }`"></i> {{ data.label }} </span> </el-col> <el-col v-if=" </el-col> <el-col v-if=" checkPermi(['standard:standardLibrary:delStandardTree']) && (node.data.children === null || node.data.children === undefined) " :span="2" style="text-align: right"> <el-button size="mini" type="text" @click.stop="editTreeName(node.data)"> <i class="el-icon-edit"></i> </el-button> </el-col> <el-col v-if=" <el-button size="mini" type="text" @click.stop="editTreeName(node.data)"> <i class="el-icon-edit"></i> </el-button> </el-col> <el-col v-if=" checkPermi(['standard:standardLibrary:delStandardTree']) && (node.data.children === null || node.data.children === undefined) " :span="2" style="text-align: right"> <el-button size="mini" type="text" @click.stop="remove(node, data)"> <i class="el-icon-delete"></i> </el-button> </el-col> </el-row> </div> </el-tree> </div> <div class="right"> <el-row class="title" style="width: 100%"> <el-col :span="20" style="font-size: 14px; color: #999">{{ selectTree }}</el-col> <el-col :span="4"> <el-button v-if="isShowCopy" size="small" style="position: absolute; right: 20px; top: 1px" type="primary" @click="openCopyDia">批量复制</el-button> </el-col> </el-row> <el-row v-loading="tableLoad" class="standard_table"> <el-table ref="standard" :data="standardList" class="el-table" header-row-class-name="header-class" height="220" :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border highlight-current-row style="width: 100%; height: 220px !important" tooltip-effect="dark" @row-click="rowClick"> <el-table-column label="标准编号" prop="code" show-overflow-tooltip width="200"> <template slot-scope="scope"> <el-button size="mini" type="text" @click.stop="remove(node, data)"> <i class="el-icon-delete"></i> </el-button> </el-col> </el-row> </div> </el-tree> </div> </el-col> </pane> <!--用户数据--> <pane size="88"> <div class="search_form"> <div style="height:37px"> <p style="font-size: 14px; color: #999;margin-left: 10px">{{ selectTree }}</p> </div> <div class="options_button"> <el-button v-if="isShowCopy" size="small" style="position: absolute; right: 20px; top: 1px" type="primary" @click="openCopyDia">批量复制</el-button> </div> </div> <el-col> <el-row v-loading="tableLoad" class="standard_table"> <el-table ref="standard" :data="standardList" class="el-table" header-row-class-name="header-class" height="220" :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border highlight-current-row style="width: 100%; height: 220px !important" tooltip-effect="dark" @row-click="rowClick"> <el-table-column label="标准编号" prop="code" 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 label="标准名称" prop="name" show-overflow-tooltip></el-table-column> <el-table-column label="备注" prop="remark" show-overflow-tooltip></el-table-column> </el-table> </el-row> <el-row v-loading="tableLoad2" class="product_table"> <el-table id="templateParamTable" ref="productTable" v-loading="productTableLoading" :data="productList" :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border :fit="true" :row-class-name="tableRowClassName" class="productTable" header-row-class-name="header-class" height="100%" row-key="id" stripe style="width: 100%" tooltip-effect="dark" @select="upProductSelect" @selection-change="handleSelectionChange" @select-all="handleAll"> <el-table-column type="selection" width="50"> </el-table-column> <el-table-column label="产品" min-width="100" prop="sample" show-overflow-tooltip></el-table-column> <el-table-column label="型号" min-width="100" prop="model" show-overflow-tooltip></el-table-column> <el-table-column label="检验项分类" min-width="140" prop="inspectionItemClass" show-overflow-tooltip></el-table-column> <el-table-column label="检验项" min-width="140" prop="inspectionItem" show-overflow-tooltip></el-table-column> <el-table-column label="检验项子项" min-width="140" prop="inspectionItemSubclass" show-overflow-tooltip></el-table-column> <el-table-column label="子实验室" prop="sonLaboratory" show-overflow-tooltip width="130"></el-table-column> <el-table-column label="要求值" min-width="200px" prop="ask"> <template slot-scope="scope"> <el-input v-if=" scope.row["code"] }}</span> </template> </el-table-column> <el-table-column label="标准名称" prop="name" show-overflow-tooltip></el-table-column> <el-table-column label="备注" prop="remark" show-overflow-tooltip></el-table-column> </el-table> </el-row> <el-row v-loading="tableLoad2" class="product_table"> <el-table id="templateParamTable" ref="productTable" v-loading="productTableLoading" :data="productList" :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" border :fit="true" :row-class-name="tableRowClassName" class="productTable" header-row-class-name="header-class" height="100%" row-key="id" stripe style="width: 100%;height:calc(100% - 220px)" tooltip-effect="dark" @select="upProductSelect" @selection-change="handleSelectionChange" @select-all="handleAll"> <el-table-column type="selection" width="50"> </el-table-column> <el-table-column label="产品" min-width="100" prop="sample" show-overflow-tooltip></el-table-column> <el-table-column label="型号" min-width="100" prop="model" show-overflow-tooltip></el-table-column> <el-table-column label="检验项分类" min-width="140" prop="inspectionItemClass" show-overflow-tooltip></el-table-column> <el-table-column label="检验项" min-width="140" prop="inspectionItem" show-overflow-tooltip></el-table-column> <el-table-column label="检验项子项" min-width="140" prop="inspectionItemSubclass" show-overflow-tooltip></el-table-column> <el-table-column label="子实验室" prop="sonLaboratory" show-overflow-tooltip width="130"></el-table-column> <el-table-column label="要求值" min-width="200px" prop="ask"> <template slot-scope="scope"> <el-input v-if=" checkPermi(['standard:standardLibrary:upStandardProduct']) " v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="要求值" size="small" type="textarea" @change="(value) => upStandardProductList(value, scope.row.id)"></el-input> <span v-else>{{ scope.row.ask }}</span> </template> </el-table-column> <el-table-column label="要求描述" min-width="220px" prop="tell"> <template slot-scope="scope"> <el-input v-if=" type="textarea" @change="(value) => upStandardProductList(value, scope.row.id)"></el-input> <span v-else>{{ scope.row.ask }}</span> </template> </el-table-column> <el-table-column label="要求描述" min-width="220px" prop="tell"> <template slot-scope="scope"> <el-input v-if=" checkPermi(['standard:standardLibrary:upStandardProduct']) " v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="要求描述" size="small" type="textarea" @change="(value) => upStandardProductListOfTell(value, scope.row.id) size="small" type="textarea" @change="(value) => upStandardProductListOfTell(value, scope.row.id) "></el-input> <span v-else>{{ scope.row.ask }}</span> </template> </el-table-column> <el-table-column label="试验方法" prop="method" width="200"> <template slot-scope="scope"> <el-select v-if=" <span v-else>{{ scope.row.ask }}</span> </template> </el-table-column> <el-table-column label="试验方法" prop="method" width="200"> <template slot-scope="scope"> <el-select v-if=" checkPermi(['standard:standardLibrary:upStandardProduct']) " v-model="scope.row.methodS" clearable placeholder="试验方法" size="small" @change="(value) => upStandardProductListOfMethodS(value, scope.row.id) "> <el-option v-for="(a, i) in scope.row.method && <el-option v-for="(a, i) in scope.row.method && JSON.parse(scope.row.method)" :key="i" :label="a" :value="a"></el-option> </el-select> <span v-else>{{ scope.row.methodS }}</span> </template> </el-table-column> <el-table-column label="条件" min-width="140" prop="radius" show-overflow-tooltip> <template slot-scope="scope"> <el-select v-if=" </el-select> <span v-else>{{ scope.row.methodS }}</span> </template> </el-table-column> <el-table-column label="条件" min-width="140" prop="radius" show-overflow-tooltip> <template slot-scope="scope"> <el-select v-if=" checkPermi(['standard:standardLibrary:upStandardProduct']) " v-model="scope.row.radius" clearable placeholder="条件" size="small" @change="(value) => upStandardProductListOfRadius(value, scope.row.id) "> <el-option v-for="(a, i) in scope.row.radiusList && <el-option v-for="(a, i) in scope.row.radiusList && JSON.parse(scope.row.radiusList)" :key="i" :label="a" :value="a"></el-option> </el-select> <span v-else>{{ scope.row.radius }}</span> </template> </el-table-column> <el-table-column label="计量单位" prop="unit" show-overflow-tooltip width="100"></el-table-column> <el-table-column label="单价(元)" prop="price" width="120"> <template slot-scope="scope"> <el-input v-if=" </el-select> <span v-else>{{ scope.row.radius }}</span> </template> </el-table-column> <el-table-column label="计量单位" prop="unit" show-overflow-tooltip width="100"></el-table-column> <el-table-column label="单价(元)" prop="price" width="120"> <template slot-scope="scope"> <el-input v-if=" checkPermi(['standard:standardLibrary:upStandardProduct']) " v-model="scope.row.price" placeholder="单价(元)" size="small" @change="(value) => upStandardProductListOfPrice(value, scope.row.id) "> </el-input> <span v-else>{{ scope.row.price }}</span> </template> </el-table-column> <el-table-column label="工时系数" prop="manHour" width="120"> <template slot-scope="scope"> <el-input v-if=" </el-input> <span v-else>{{ scope.row.price }}</span> </template> </el-table-column> <el-table-column label="工时系数" prop="manHour" width="120"> <template slot-scope="scope"> <el-input v-if=" checkPermi(['standard:standardLibrary:upStandardProduct']) " v-model="scope.row.manHour" placeholder="单价(元)" size="small" @change="(value) => upStandardProductListOfManHour(value, scope.row.id) "> </el-input> <span v-else>{{ scope.row.manHour }}</span> </template> </el-table-column> <el-table-column label="工时分组" prop="manHourGroup" show-overflow-tooltip width="100"></el-table-column> <el-table-column label="模板" prop="templateId" width="200"> <template slot-scope="scope"> <el-select v-model="scope.row.templateId" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct']) </el-input> <span v-else>{{ scope.row.manHour }}</span> </template> </el-table-column> <el-table-column label="工时分组" prop="manHourGroup" show-overflow-tooltip width="100"></el-table-column> <el-table-column label="模板" prop="templateId" width="200"> <template slot-scope="scope"> <el-select v-model="scope.row.templateId" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct']) " filterable size="small" @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 label="区间" prop="section" show-overflow-tooltip width="120"></el-table-column> <el-table-column label="操作" prop="section" width="160"> <template slot-scope="scope"> <el-button type="text" @click="sectionUp(scope.row)" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct']) <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 label="区间" prop="section" show-overflow-tooltip width="120"></el-table-column> <el-table-column label="操作" prop="section" width="160"> <template slot-scope="scope"> <el-button type="text" @click="sectionUp(scope.row)" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct']) ">区间设置</el-button> <el-button type="text" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct']) <el-button type="text" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct']) " @click="bindSupplierDensitySecond(scope.row)">绑定厂家</el-button> </template> </el-table-column> </el-table> <!-- <el-pagination :current-page="currentPage" :page-size="300" :total="total" layout="total" style="position: absolute; right: 16px; bottom: 1px" @current-change="handleCurrentChange"> </el-pagination> --> <p style="text-align: right;margin-right: 20px;color: #333;">共{{ total }}条</p> </el-row> </div> </template> </el-table-column> </el-table> <!-- <el-pagination :current-page="currentPage" :page-size="300" :total="total" layout="total" style="position: absolute; right: 16px; bottom: 1px" @current-change="handleCurrentChange"> </el-pagination> --> <p style="text-align: right;margin-right: 20px;color: #333;">共{{ total }}条</p> </el-row> </el-col> </pane> </splitpanes> </el-row> <el-dialog :visible.sync="addDia" title="分类添加" width="400px"> <div class="body"> @@ -196,7 +204,7 @@ </el-col> <el-col :offset="1" :span="16"> <el-input v-model="addOb.model" clearable placeholder="请输入型号" size="small" @keyup.enter.native="addStandardTree"></el-input> @keyup.enter.native="addStandardTree"></el-input> </el-col> </el-row> </div> @@ -213,7 +221,7 @@ </el-col> <el-col :offset="1" :span="16"> <el-input v-model="addOb.model" clearable placeholder="请输入型号" size="small" @keyup.enter.native="updateStandardTree"></el-input> @keyup.enter.native="updateStandardTree"></el-input> </el-col> </el-row> </div> @@ -246,7 +254,7 @@ <el-table-column align="center" label="要求描述"> <template slot-scope="scope"> <el-input v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 2 }" clearable placeholder="要求描述" size="small" type="textarea"></el-input> size="small" type="textarea"></el-input> </template> </el-table-column> <el-table-column align="center" label="导体材质"> @@ -272,7 +280,7 @@ <el-table-column align="center" label="操作" width="70"> <template slot-scope="scope"> <el-button circle icon="el-icon-minus" size="mini" type="danger" @click="sectionList.splice(scope.$index, 1)"></el-button> @click="sectionList.splice(scope.$index, 1)"></el-button> </template> </el-table-column> </el-table> @@ -284,11 +292,11 @@ </span> </el-dialog> <bindSupplierDensityDialogAsk v-if="bindSupplierDensityDialog" :bindSupplierDensityDialog="bindSupplierDensityDialog" :currentRow="currentSupplierDensityRow" @closeBindPartDialog="closeBindSupplierDensityDialog"> :bindSupplierDensityDialog="bindSupplierDensityDialog" :currentRow="currentSupplierDensityRow" @closeBindPartDialog="closeBindSupplierDensityDialog"> </bindSupplierDensityDialogAsk> <BatchCopy v-if="batchCopyDia" ref="BatchCopy" :selectTree1="selectTree" :standardId="standardId" @refreshList="refreshList"></BatchCopy> @refreshList="refreshList"></BatchCopy> </div> </template> @@ -316,12 +324,17 @@ } from "@/api/standard/standardLibrary"; import bindSupplierDensityDialogAsk from "./components/bindSupplierDensityDialogAsk.vue"; import BatchCopy from "./components/BatchCopy.vue"; import { Splitpanes, Pane } from "splitpanes"; import "splitpanes/dist/splitpanes.css"; export default { name: 'StandardLibrary', components: { BatchCopy, bindSupplierDensityDialogAsk, draggable, Splitpanes, Pane }, dicts: ["sys_factory", "sys_sub_lab", "sys_samp_type"], data() { @@ -502,9 +515,10 @@ if (!value) { //如果数据为空,则返回true,显示所有的数据项 return true } return data.label.indexOf(value) !== -1; // 查询列表是否有匹配数据,将值小写,匹配英文数据 let val = value.toLowerCase() return this.chooseNode(val, data, node) // 调用过滤二层方法 // let val = value.toLowerCase() // return this.chooseNode(val, data, node) // 调用过滤二层方法 }, // 过滤父节点 / 子节点 (如果输入的参数是父节点且能匹配,则返回该节点以及其下的所有子节点;如果参数是子节点,则返回该节点的父节点。name是中文字符,enName是英文字符. chooseNode (value, data, node) { @@ -700,10 +714,10 @@ .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, }); code: "[5]", label: this.addOb.model, value: this.addOb.model, }); this.addLoad = false; }) .catch((e) => { @@ -1207,25 +1221,52 @@ }, }; </script> <style scoped> .standard { padding-top: 10px; <style scoped lang="scss"> .search_form { display: flex; height: calc(100vh - 90px); justify-content: space-between; .options_button { margin-top: 3px; } } .left { width: 330px; height: calc(100% - 40px - 10px); background-color: white; padding: 15px; .avatar-uploader ::v-deep .el-upload { border: 1px dashed #666666; border-radius: 6px; cursor: pointer; position: relative; overflow: hidden; } .avatar-uploader ::v-deep .el-upload:hover { border-color: #409EFF; } .avatar-uploader-icon { font-size: 20px; color: #8c939d; width: 90px; height: 90px; line-height: 90px; text-align: center; } .avatar { width: 90px; height: 90px; display: block; } .addButton { display: flex; align-items: flex-start; } .custom-tree-node { width: 100%; line-height: 32px; } .custom-tree-node .el-icon-delete { color: #3a7bfa; opacity: 0; @@ -1250,28 +1291,9 @@ color: orange; font-size: 18px; } .right { margin-left: 5px; width: calc(100% - 350px); height: calc(100% - 40px); } .right .title { height: 34px; line-height: 34px; padding: 0 10px; background-color: white; } .standard_table { border-top: 1px solid #ebeef5; background-color: white; } .product_table { border-top: 1px solid #ebeef5; height: calc(100% - 235px); height: calc(100vh - 398px); margin-top: 5px; background-color: white; user-select: none; @@ -1279,114 +1301,5 @@ .product_table .el-table { height: calc(100% - 35px) !important; } .sort { width: 80% !important; overflow: hidden; } >>>.el-table__body-wrapper { height: calc(100% - 46px) !important; } >>>.header-class { height: 40px !important; } >>>.header-class th.el-table__cell>.cell { line-height: 20px !important; padding-top: 0 !important; padding-bottom: 0 !important; } >>>.el-table__row { height: 35px !important; } .search { border-bottom: 1px solid #ebeef5; margin-bottom: 16px; display: flex; align-items: center; box-sizing: border-box; padding-bottom: 10px; } .search-item { display: flex; align-items: center; flex-wrap: wrap; } .search-item .el-row { display: flex; align-items: center; } .search-item .el-col { margin-left: 0; } .more-edit .dialog-footer { position: absolute; top: 15px; right: 70px; } >>>.is-disabled .el-textarea__inner { background: rgba(0, 0, 0, 0.05) !important; } </style> <style scoped> .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 { color: #3a7bfa; } .standard .has-gutter .el-table__cell .cell { line-height: 34px; background-color: #f8f8f8; } .standard .has-gutter .el-table__cell { background-color: #fafafa !important; } .standard .standard_table .el-table__row .cell { font-size: 14px; } .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>