不合格管理:新增OA审核状态、物料属性,时间区间字段;以及导出功能
| | |
| | | params: query, |
| | | }); |
| | | } |
| | | //导出不合格处理记录 |
| | | export function exportUnqualifiedHandler(query) { |
| | | return request({ |
| | | url: "/unqualifiedHandler/exportUnqualifiedHandler", |
| | | method: "get", |
| | | params: query, |
| | | responseType: "blob", |
| | | }); |
| | | } |
| | |
| | | @keyup.enter.native="goSearch"> |
| | | </el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="委托编号" prop="entrustCode" v-if="tabIndex !== 0"> |
| | | <el-input v-model="entity.entrustCode" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="goSearch"> |
| | | </el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="零件号" prop="partNo"> |
| | | <el-input v-model="entity.partNo" clearable placeholder="请输入" size="small" @keyup.enter.native="goSearch"> |
| | | </el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="零件描述" prop="partDesc"> |
| | | <el-input v-model="entity.partDesc" 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%" @change="refreshTable()"> |
| | | <el-option v-for="dict in dict.type.material_prop_type" :key="dict.value" :label="dict.label" |
| | |
| | | </el-option> |
| | | </el-select> |
| | | </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="sampleModel" |
| | | v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more"> |
| | | <el-input v-model="entity.sampleModel" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="goSearch"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="检验状态" prop="inspectStatus" |
| | | 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"> |
| | | </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" |
| | |
| | | <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="sampleModel" |
| | | v-if="(tabIndex === 2 || tabIndex === 3 || tabIndex === 4) && more"> |
| | | <el-input v-model="entity.sampleModel" clearable placeholder="请输入" size="small" |
| | | @keyup.enter.native="goSearch"> |
| | | </el-input> |
| | | </el-form-item> |
| | | |
| | | <el-form-item label="检验状态" prop="inspectStatus" |
| | | 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"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | |
| | | </el-form> |
| | | </div> |
| | | <div class="table"> |
| | |
| | | @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" |
| | |
| | | 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> |
| | | <div class="table"> |
| | |
| | | @keyup.enter.native="refreshTable"> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button v-if="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="refreshTable()">查询</el-button> |
| | | <el-button size="mini" @click="refresh()" >重置</el-button> |
| | | </el-form-item> |
| | | </el-row> |
| | | <el-row> |
| | | <el-form-item label="检验状态" prop="inspectStatus" v-if="(tabIndex === 3 || tabIndex === 4) && more"> |
| | | <el-select v-model="componentData.inspectStatus" clearable size="small" style="width: 100%;" |
| | | @change="refreshTable()"> |
| | |
| | | <el-option v-for="(item,index) in orderTypeList" :label="item.dictLabel" :value="item.dictValue" :key="index"></el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button v-if="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="refreshTable()">查询</el-button> |
| | | <el-button size="mini" @click="refresh()" >重置</el-button> |
| | | </el-form-item> |
| | | </el-row> |
| | | </el-form> |
| | | </div> |
| | |
| | | <el-input size="small" placeholder="请输入" clearable v-model="entity.sample" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="物料属性" prop="materialProp"> |
| | | <el-select clearable size="small" v-model="entity.materialProp" style="width: 100%" @change="refreshTable()"> |
| | | <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="OA审核状态" prop="operation"> |
| | | <el-select clearable size="small" v-model="entity.operation" style="width: 100%" @change="refreshTable()"> |
| | | <el-option v-for="dict in dict.type.oa_workflow_state" :key="dict.value" :label="dict.label" |
| | | :value="dict.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </el-form-item> |
| | | <el-form-item label="反馈日期" prop="feedbackDateTime"> |
| | | <el-date-picker |
| | | type="daterange" |
| | | size="small" |
| | | start-placeholder="开始日期" |
| | | end-placeholder="结束日期" |
| | | clearable |
| | | value-format="yyyy-MM-dd" |
| | | v-model="entity.feedbackDateTime" |
| | | @keyup.enter.native="refreshTable()"> |
| | | </el-date-picker> |
| | | </el-form-item> |
| | | <el-form-item label="供应商名称" prop="supplierName"> |
| | | <el-input size="small" placeholder="请输入" clearable v-model="entity.supplierName" |
| | | @keyup.enter.native="refreshTable()"></el-input> |
| | | </el-form-item> |
| | | <el-form-item> |
| | | <el-button type="primary" size="mini" @click="refreshTable">查询</el-button> |
| | | <el-button size="mini" @click="refresh">重置</el-button> |
| | | <el-button :loading="exportLoading" type="success" size="mini" @click="exportUnqualifiedHandler">导出</el-button> |
| | | </el-form-item> |
| | | </el-form> |
| | | </div> |
| | |
| | | import UnPassDialog from "./components/unPassDialog.vue"; |
| | | import OAProcess from "./components/OAProcess.vue"; |
| | | import limsTable from "@/components/Table/lims-table.vue"; |
| | | import {deleteUnqualifiedHandler, page, pushOA} from "@/api/business/unqualifiedHandler"; |
| | | |
| | | import {deleteUnqualifiedHandler, page, pushOA,exportUnqualifiedHandler} from "@/api/business/unqualifiedHandler"; |
| | | import {transformExcel} from '@/utils/file' |
| | | export default { |
| | | components: { |
| | | limsTable, |
| | | OAProcess, |
| | | UnPassDialog, |
| | | }, |
| | | dicts: ['material_prop_type','oa_workflow_state'], |
| | | data() { |
| | | return { |
| | | handlerId: null, |
| | |
| | | contract: null, |
| | | sample: null, |
| | | specsModels: null, |
| | | supplierName: null, |
| | | feedbackDateTime:[], |
| | | materialProp: null, |
| | | operation:null |
| | | }, |
| | | tableData: [], |
| | | tableLoading: false, |
| | |
| | | { |
| | | label: 'IFS域', |
| | | prop: 'contract', |
| | | width: '120px', |
| | | width: '80px', |
| | | dataType: 'tag', |
| | | formatData: (params) => { |
| | | return params |
| | |
| | | |
| | | }, |
| | | { label: '编号', prop: 'no', width: "160px", }, |
| | | // { |
| | | // label: "OA审核状态", |
| | | // prop: "oaState", |
| | | // width: "100px", |
| | | // dataType: "tag", |
| | | // formatData: (params) => { |
| | | // if (params == 1) { |
| | | // return "待审核"; |
| | | // } else if(params == 2) { |
| | | // return "审核中"; |
| | | // } else if(params == 3) { |
| | | // return "通过"; |
| | | // } else { |
| | | // return "驳回"; |
| | | // } |
| | | // }, |
| | | // formatType: (params) => { |
| | | // if (params == 1) { |
| | | // return "warning"; |
| | | // } else if(params == 2) { |
| | | // return "info"; |
| | | // } else if(params == 3) { |
| | | // return "success"; |
| | | // } else { |
| | | // return "danger"; |
| | | // } |
| | | // }, |
| | | // }, |
| | | { |
| | | label: "OA审核状态", |
| | | prop: "operation", |
| | | width: "100px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | return params |
| | | }, |
| | | formatType: (params) => { |
| | | if(params){ |
| | | this.dict.type.oa_workflow_state.forEach(item => { |
| | | if(item.value === params){ |
| | | params = item.raw.listClass |
| | | } |
| | | }); |
| | | } |
| | | return params |
| | | }, |
| | | }, |
| | | { label: '订单号', prop: 'orderNo' }, |
| | | { |
| | | label: "零件号", |
| | |
| | | dataType: "link", |
| | | linkMethod: "openUnPassDialog", |
| | | }, |
| | | { label: '零件描述', prop: 'partDesc' }, |
| | | { label: '物料名称', prop: 'materialName' }, |
| | | { label: '生产批次', prop: 'productionBatch' }, |
| | | { label: '零件描述', prop: 'partDesc',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: 'materialName',width: "160px" }, |
| | | { label: '生产批次', prop: 'productionBatch',width: "160px" }, |
| | | { label: '到货数量', prop: 'cargoQuantity' }, |
| | | { label: '规格型号', prop: 'specsModels' }, |
| | | { label: '报检日期', prop: 'inspectTime' }, |
| | | { label: '状态', prop: 'statusDB' }, |
| | | { label: '反馈人', prop: 'feedbackUser' }, |
| | | { label: '要检验的采购数量', prop: 'qtyToInspect' }, |
| | | { label: '反馈日期', prop: 'feedbackTime' }, |
| | | { label: '要检验的采购数量', prop: 'qtyToInspect',width: "140px" }, |
| | | { label: '反馈日期', prop: 'feedbackTime',width: "100px" }, |
| | | { |
| | | label: "分类", |
| | | prop: "classification", |
| | |
| | | { |
| | | label: "不合格归属", |
| | | prop: "offGradeAscription", |
| | | width: "100px", |
| | | width: "120px", |
| | | dataType: "tag", |
| | | formatData: (params) => { |
| | | if (params == 0) { |
| | |
| | | } |
| | | }, |
| | | }, |
| | | { label: '不合格描述', prop: 'unqualifiedDesc' }, |
| | | { label: '不合格描述', prop: 'unqualifiedDesc',width: "160px" }, |
| | | { |
| | | dataType: 'action', |
| | | fixed: 'right', |
| | |
| | | submitOALoading: false, // OA流程弹框提交按钮loading |
| | | deleteVisible: false, // OA流程删除弹框 |
| | | cancelOALoading: false, // OA流程删除弹框提交按钮loading |
| | | exportLoading:false |
| | | }; |
| | | }, |
| | | mounted() { |
| | | this.refreshTable() |
| | | }, |
| | | methods: { |
| | | exportUnqualifiedHandler(){ |
| | | this.exportLoading = true |
| | | const newEntity = { ...this.entity } |
| | | if (newEntity.feedbackDateTime && newEntity.feedbackDateTime.length > 0) { |
| | | newEntity.feedbackStartTime = newEntity.feedbackDateTime[0] |
| | | newEntity.feedbackEndTime = newEntity.feedbackDateTime[1] |
| | | } |
| | | exportUnqualifiedHandler({...newEntity}).then(res=>{ |
| | | transformExcel(res,'不合格处理记录.xlsx') |
| | | this.exportLoading = false |
| | | }).catch(error=>{ |
| | | console.error(error) |
| | | }) |
| | | }, |
| | | refreshTable() { |
| | | this.tableLoading = true |
| | | page({ ...this.page, ...this.entity }).then(res => { |
| | | const newEntity = { ...this.entity } |
| | | if (newEntity.feedbackDateTime && newEntity.feedbackDateTime.length > 0) { |
| | | newEntity.feedbackStartTime = newEntity.feedbackDateTime[0] |
| | | newEntity.feedbackEndTime = newEntity.feedbackDateTime[1] |
| | | } |
| | | page({ ...this.page, ...newEntity }).then(res => { |
| | | this.tableLoading = false |
| | | this.tableData = res.data.records |
| | | this.page.total = res.data.total |
| | |
| | | <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> |
| | | suffix-icon="el-icon-search" @keydown.enter.native="searchFilter" @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"> |
| | |
| | | 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) { |