1.外购下单:标签打印功能调整
2.人员:培训计划导入导出添加【培训大类】字段
3.业务管理:报检新增【物料属性】字段选择,其余页面添加【物料属性】查询条件以及数据回显
4.标准库:布局优化,左侧选择树支持横向拖拽动态调整宽度
| | |
| | | params: query |
| | | }) |
| | | } |
| | | // 外购下单成品标签打印信息 |
| | | export function labelOutsideOrderPrinting(query) { |
| | | return request({ |
| | | url: '/insOrder/labelOutsideOrderPrinting', |
| | | method: 'post', |
| | | data: query |
| | | }) |
| | | } |
| | | // 查询成品标签打印信息 |
| | | export function labelOrderPrinting(query) { |
| | | return request({ |
| | |
| | | Vue.prototype.HaveJson = (val) => { |
| | | return JSON.parse(JSON.stringify(val)); |
| | | }; |
| | | Vue.prototype.javaApi = "http://192.168.21.53:8001/lims"; |
| | | // Vue.prototype.javaApi = "http://192.168.21.53:8001/lims"; |
| | | Vue.prototype.javaApi = "http://127.0.0.1:8001"; |
| | | Vue.prototype.checkPermi = checkPermi; |
| | | Vue.prototype.uploadHeader = { |
| | | Authorization: "Bearer " + getToken(), |
| | |
| | | inDetailPlanTableData: [], // 年度计划明细表表数据 |
| | | inDetailPlanColumn: [ |
| | | { |
| | | label: '培训大类', |
| | | prop: 'trainingCategory', |
| | | width: '100px', |
| | | },{ |
| | | label: '培训目标', |
| | | prop: 'trainingObjectives', |
| | | width: '100px', |
| | |
| | | <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> |
| | |
| | | onlyoffice, |
| | | limsTable, |
| | | }, |
| | | dicts: ["urgency_level", "inspection_task_state"], |
| | | dicts: ["urgency_level", "inspection_task_state","material_prop_type"], |
| | | computed: { |
| | | ...mapGetters(["nickName", "userId"]), |
| | | }, |
| | |
| | | }, |
| | | { 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", |
| | |
| | | :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> |
| | |
| | | viewManHourDia, |
| | | UnPassRetestResult |
| | | }, |
| | | dicts: ["urgency_level", "inspection_task_state"], |
| | | dicts: ["urgency_level", "inspection_task_state","material_prop_type"], |
| | | computed: { |
| | | ...mapGetters(["nickName", "userId"]), |
| | | }, |
| | |
| | | }, |
| | | { 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", |
| | |
| | | @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"> |
| | | <el-input v-model="entity.supplierName" clearable placeholder="请输入" size="small" |
| | | @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"> |
| | |
| | | <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> |
| | |
| | | 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: '物料类型', |
| | |
| | | { 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: '物料类型', |
| | |
| | | }, |
| | | { 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: '物料类型', |
| | |
| | | { 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', |
| | |
| | | { 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', |
| | |
| | | date: null, |
| | | beginDeclareDate: null, |
| | | endDeclareDate: null, |
| | | materialProp: null, |
| | | }, |
| | | tabList: [ |
| | | { |
| | |
| | | <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;" |
| | | <el-checkbox style="margin: 10px 5px;" :indeterminate="isIndeterminate" v-model="checkAll" |
| | | @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-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 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 style="margin-left: 20px;text-align: left"> |
| | | </div> |
| | | <div style="flex: 1; margin-left: 10px;text-align: left"> |
| | | <div class="item"> |
| | | <span class="full-title">样品名称</span>: |
| | | <span class="info">{{ item.sampleView }}</span> |
| | | <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.production }}</span> |
| | | <span class="full-title">绝缘颜色</span> |
| | | <span class="info">{{ item.insulationColor }}</span> |
| | | </div> |
| | | <div class="item2"> |
| | | <span class="full-title">规格型号</span>: |
| | | <span class="info">{{ item.sampleModel }}</span> |
| | | <span class="full-title">护套颜色</span> |
| | | <span class="info">{{ item.outerColor }}</span> |
| | | </div> |
| | | <div class="item"> |
| | | <span class="full-title">委托日期</span>: |
| | | <span class="info">{{ item.sendTime }}</span> |
| | | <span class="full-title">载具编号</span> |
| | | <span class="info">{{ item.drumNo }}</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> |
| | | <span class="full-title">起止米标</span> |
| | | <span class="info">{{ item.startMeterMark }} - {{ item.endMeterMark }}</span> |
| | | </div> |
| | | <div class="item"> |
| | | <span class="full-title">样品数量</span>: |
| | | <span class="info2">{{ item.testQuantity }}</span> |
| | | <span class="full-title">长度(km)</span> |
| | | <span class="info">{{ calcInbondLength(item.startMeterMark, item.endMeterMark) }}</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 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> |
| | |
| | | </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 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 style="margin-left: 12px;text-align: left"> |
| | | </div> |
| | | <div style="flex: 1; margin-left: 5px;text-align: left"> |
| | | <div class="item"> |
| | | <span class="full-title4">样品名称:</span> |
| | | <span class="info4">{{ item.sampleView }}</span> |
| | | <span class="full-title">SN号</span> |
| | | <span class="info">{{ item.lotBatchNo }}</span> |
| | | </div> |
| | | <div class="item"> |
| | | <span class="full-title2">生产单位</span>: |
| | | <span class="info">{{ item.production }}</span> |
| | | <span class="full-title">绝缘颜色</span> |
| | | <span class="info">{{ item.insulationColor }}</span> |
| | | </div> |
| | | <div class="item2"> |
| | | <span class="full-title4">规格型号:</span> |
| | | <span class="info4">{{ item.sampleModel }}</span> |
| | | <span class="full-title">护套颜色</span> |
| | | <span class="info">{{ item.outerColor }}</span> |
| | | </div> |
| | | <div class="item"> |
| | | <span class="full-title2">委托日期</span>: |
| | | <span class="info">{{ item.sendTime }}</span> |
| | | <span class="full-title">载具编号</span> |
| | | <span class="info">{{ item.drumNo }}</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> |
| | | <span class="full-title">起止米标</span> |
| | | <span class="info">{{ item.startMeterMark }} - {{ item.endMeterMark }}</span> |
| | | </div> |
| | | <div class="item"> |
| | | <span class="full-title2">样品数量</span>: |
| | | <span class="info3">{{ item.testQuantity }}</span> |
| | | <span class="full-title">长度(km)</span> |
| | | <span class="info">{{ calcInbondLength(item.startMeterMark, item.endMeterMark) }}</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 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> |
| | |
| | | |
| | | <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() { |
| | | // 这里存放数据 |
| | |
| | | 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) { |
| | |
| | | } |
| | | |
| | | }, |
| | | 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 |
| | | } |
| | | }, |
| | | // 全选多选框回调 |
| | |
| | | }, |
| | | 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() { |
| | |
| | | } |
| | | @media print{ |
| | | width: 400px; |
| | | height: 75px; |
| | | height: 800px; |
| | | margin:0; |
| | | }`, |
| | | onPrintDialogClose: this.erexcel = false, |
| | |
| | | |
| | | <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 { |
| | |
| | | .checked { |
| | | margin-right: 14px; |
| | | margin-left: 4px; |
| | | font-weight: bold; |
| | | } |
| | | |
| | | .print-person-label { |
| | | display: inline-block; |
| | | width: 50px; |
| | | text-align-last: justify; |
| | | text-align: justify; |
| | | font-weight: bold; |
| | | } |
| | | |
| | | >>> .el-checkbox { |
| | |
| | | @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" |
| | |
| | | <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> |
| | |
| | | </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"; |
| | |
| | | |
| | | export default { |
| | | name: "MaterialOrder", |
| | | dicts: ['material_prop_type'], |
| | | // import 引入的组件需要注入到对象中才能使用 |
| | | components: { limsTable, DownFileDialog, FilesLookVisible, DataLookVisible, ShowInfo, PrintDialog }, |
| | | data() { |
| | |
| | | { 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: '物料类型', |
| | |
| | | { 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: '物料类型', |
| | |
| | | }, |
| | | { 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: '物料类型', |
| | |
| | | { 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', |
| | |
| | | date: null, |
| | | beginDeclareDate: null, |
| | | endDeclareDate: null, |
| | | materialProp: null |
| | | }, |
| | | tabList: [ |
| | | { |
| | |
| | | <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" |
| | |
| | | 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, |
| | |
| | | <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> |
| | |
| | | <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> |
| | |
| | | </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> |
| | | <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> |
| | |
| | | data() { |
| | | // 这里存放数据 |
| | | return { |
| | | materialPropVisible:false, |
| | | declareBatchObj:{ |
| | | orderType:'' |
| | | orderType:'', |
| | | materialProp:'' |
| | | }, |
| | | declareObjBatchRules:{ |
| | | orderType: [ |
| | | { required: true, message: '请选择销售订单分类', trigger: 'change' } |
| | | ], |
| | | materialProp: [ |
| | | { required: true, message: '请选择物料属性', trigger: 'change' } |
| | | ], |
| | | }, |
| | | confirmSplitOrderLoading: false, |
| | |
| | | buyUnitMeas: '', // 单位 |
| | | isExpire: '', // 单位 |
| | | orderType: null, // 销售订单分类 |
| | | materialProp: null, // 物料属性 |
| | | }, |
| | | componentData: { // 表格数据 |
| | | updateBatchNo: null, |
| | |
| | | orderType: [ |
| | | { required: true, message: '请选择销售订单分类', trigger: 'change' } |
| | | ], |
| | | materialProp: [ |
| | | { required: true, message: '请选择物料属性', trigger: 'change' } |
| | | ], |
| | | }, |
| | | tabList: [ |
| | | { |
| | |
| | | outLoading: false, |
| | | upLoading: false, |
| | | orderTypeList: [], |
| | | materialPropList: [], |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.refreshTable() |
| | | this.getOrderTypeList() |
| | | this.getMaterialPropList() |
| | | }, |
| | | // 方法集合 |
| | | methods: { |
| | |
| | | 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) |
| | |
| | | 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){ |
| | |
| | | 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 |
| | |
| | | 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 |
| | |
| | | <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> |
| | |
| | | export default { |
| | | name: 'ReportPreparation', |
| | | components: { limsTable, onlyoffice }, |
| | | dicts: ['material_prop_type'], |
| | | data() { |
| | | return { |
| | | entity: { |
| | |
| | | code: null, |
| | | typeSource: null, |
| | | orderType: null, |
| | | materialProp: null |
| | | }, |
| | | page: { |
| | | current: 1, |
| | |
| | | }, |
| | | }, |
| | | { |
| | | 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", |
| | |
| | | this.formData.approvedWorkingHour = ""; |
| | | this.formData.nonproductiveTime = ""; |
| | | this.formData.auxiliaryProject = ""; |
| | | this.addVisible = false; |
| | | this.refreshTable("page"); |
| | | // this.collectWorkingHours(); |
| | | }); |
| | |
| | | <template> |
| | | <div class="standard"> |
| | | <div class="left"> |
| | | <el-row> |
| | | <el-col :span="20"> |
| | | <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" @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"> |
| | | 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> |
| | | </el-col> |
| | | </el-row> |
| | | </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(100% - 30px); |
| | | :props="{ children: 'children', label: 'label' }" highlight-current node-key="label" |
| | | style=" |
| | | height: calc(100vh - 173px); |
| | | overflow-y: scroll; |
| | | scrollbar-width: none; |
| | | " @node-click="handleNodeClick" |
| | | scrollbar-width: none;" |
| | | @node-click="handleNodeClick" |
| | | @node-drop="handleDrop"> |
| | | <div slot-scope="{ node, data }" class="custom-tree-node"> |
| | | <el-row style="width: 100%"> |
| | |
| | | </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-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> |
| | | </el-col> |
| | | </el-row> |
| | | </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 |
| | |
| | | <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%" |
| | | 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-pagination> --> |
| | | <p style="text-align: right;margin-right: 20px;color: #333;">共{{ total }}条</p> |
| | | </el-row> |
| | | </div> |
| | | </el-col> |
| | | </pane> |
| | | </splitpanes> |
| | | </el-row> |
| | | |
| | | <el-dialog :visible.sync="addDia" title="分类添加" width="400px"> |
| | | <div class="body"> |
| | |
| | | } 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() { |
| | |
| | | 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) { |
| | |
| | | }, |
| | | }; |
| | | </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; |
| | |
| | | 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; |
| | |
| | | |
| | | .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> |