src/assets/api/controller.js
@@ -14,6 +14,17 @@ leftAddOneTwo: "/material/add",//左侧新增1,2级 leftAddThree: "/standard/add",//左侧三级新增 leftAddFour: "/specifications/add",//左侧四级新增 chooseTechByStandard:"/product/chooseTech",//右上角新增-->技术指标-->选择工序,工艺 chooseFatherByStandard:"/product/chooseFather",//右上角新增-->技术指标-->选择项目父类 addProductByStandard:"/product/add",//右上角新增-->技术指标 addMBomByStandard:"/mbom/add",//右上角新增-->物料清单 chooseTechByMBom:"/mbom/chooseTech",//右上角新增-->物料清单-->选择工序,工艺 mBomWrite:"/mbom/write",//物料清单-->数量,移开保存 chooseTechByProduct:"/technique/chooseTech",//右上角新增-->生产工艺-->选择工序,工艺 addTechniqueByStandard:"/technique/add",//右上角新增-->生产工艺 chooseProByProduct:"/technique/choosePro",//右上角新增-->生产工艺-->选择项目(父子),单位 chooseDevByProduct:"/technique/chooseDev",//右上角新增-->生产工艺-->选择设备 // 技术管理-技术文件 selectAllOrder: "/orders/selectAllOrder", //查询所有订单列表 selectOrderById: "/orders/selectOrderById", //根据订单id查询订单详情 @@ -56,11 +67,14 @@ // listMaterial:"/finished-inspect/list_material",//添加检验单时的项目列表 finishedInspectUser: "/finished-inspect/page_user", //获取所有主机工 projectListByfinishId: "/inspection-item/list_user", //根据id查询所有项目 processInspectAddProcess: "/processInspect/addProcess",//新增检验 inspectionItemListUser: "/inspection-item/list_user",//查询所有检验项目 } // 过程检验 const processInspection = { selectProcessInspectsList: "/processInspect/selectProcessInspectsList", // 分页查询过程检验单列表 chooseMaterProcessInspect: "/processInspect/chooseMater",//根据订单号选择产品和工艺 } // QMS实验室管理 const laboratory = { src/components/view/Technicalindex.vue
@@ -10,24 +10,15 @@ </el-col> </el-row> </div> <div> <div style="height: calc(100% - 42px);"> <!-- 编辑弹窗 --> <div> <el-dialog title="技术指标编辑" :visible.sync="modifyevent" width="40%" :before-close="handleClose"> <el-dialog title="技术指标编辑" :visible.sync="modifyevent" width="40%" :before-close="handleClose"> <el-form ref="form" :model="form" label-width="80px"> <el-form-item label="类型"> <template> <el-select v-model="value" placeholder="请选择" style="width: 560px;"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </template> @@ -70,7 +61,8 @@ </div> <div class="choose"> <span>类型:</span> <el-select v-model="search.type" size="small" placeholder="请选择" @change="TYpe" style="width: 224px;margin-right: 30px;"> <el-select v-model="search.type" size="small" placeholder="请选择" @change="TYpe" style="width: 224px;margin-right: 30px;"> <el-option label="橡胶连接器" :value="0"></el-option> <el-option label="金属连接器" :value="1"></el-option> <el-option label="湿插拔电连接器" :value="2"></el-option> @@ -86,14 +78,10 @@ <div class="thing"> <!-- 主体左 --> <div class="left"> <el-input v-model="search.technology" suffix-icon="el-icon-search" placeholder="请输入搜索内容" size="small" <el-input v-model="search.technology" suffix-icon="el-icon-search" placeholder="请输入搜索内容" size="small" clearable @input="query" ></el-input> <el-tree :data="list" ref="tree" :props="{children: 'children',label: 'father'}" style="height: 500px;overflow-y: auto;" node-key="name" default-expand-all @node-click="handleNodeClick" highlight-current > <el-tree :data="list" ref="tree" :props="{children: 'children',label: 'father'}" node-key="name" default-expand-all @node-click="handleNodeClick" highlight-current> <div class="custom-tree-node" slot-scope="{ node, data }"> <span><i :class="`node_i ${data.code != '[2]'?'el-icon-folder-opened':'el-icon-tickets'}`"></i> {{data.code}} {{ data.name }}</span> @@ -105,29 +93,14 @@ </div> <!-- 主体右 --> <div class="right"> <el-table :data="tableData" style="width: 100%;margin-bottom: 20px; height: 580px;overflow: auto;" row-key="name" border @select="selectTr" @selection-change="handleSelectionChange" default-expand-all ref="multipleTable" :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> <el-table-column type="selection" width="55"> <el-table :data="tableData" style="width: 100%;overflow-y: auto;min-height: 100%" max-height="100%" row-key="name" border @selection-change="handleSelectionChange" default-expand-all :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> <el-table-column type="selection" width="55"> </el-table-column> <el-table-column type="index" width="50"> <el-table-column type="index" width="50"> </el-table-column> <el-table-column prop="name" label="项目" sortable width="400px"> <el-table-column prop="name" label="项目" sortable width="400px"> <template slot-scope="scope"> <el-tag> <div class="firstDiv" :style="`color: ${scope.row.children? '#16a7ff' : '#58c173'}`"> @@ -135,17 +108,11 @@ </div> </el-tag> <span style="color: black">{{ scope.row.name }}</span> </template> </el-table-column> <el-table-column prop="unit" label="单位"> <el-table-column prop="unit" label="单位"> </el-table-column> <el-table-column prop="address" label="操作" width="200px"> <el-table-column prop="address" label="操作" width="200px"> <template slot-scope="scope" style="text-align: center;"> <div v-if="!scope.row.children"> <el-button type="text" size="mini" @click="childrenClick(scope.row)">编辑</el-button> @@ -163,7 +130,8 @@ <el-col :span="4" style="font-size: 14px;text-align: right;">类型:</el-col> <el-col :span="16" :offset="1"> <template> <el-select v-model="edit.type" disabled placeholder="请选择" @change="TYpe" style="width: 306px;margin-right: 30px;"> <el-select v-model="edit.type" disabled placeholder="请选择" @change="TYpe" style="width: 306px;margin-right: 30px;"> <el-option label="橡胶连接器" :value="0"></el-option> <el-option label="金属连接器" :value="1"></el-option> <el-option label="湿插拔电连接器" :value="2"></el-option> @@ -176,19 +144,9 @@ <el-col :span="4" style="font-size: 14px;text-align: right;">工序:</el-col> <el-col :span="16" :offset="1"> <template> <el-select v-model="edit.techFather" placeholder="请选择" allow-create disabled style="width: 306px;" filterable @change="workevent" > <el-option v-for="(item,index) in process" :key="item.name" :label="item.name" :value="item.name"> <el-select v-model="edit.techFather" placeholder="请选择" allow-create disabled style="width: 306px;" filterable @change="workevent"> <el-option v-for="(item,index) in process" :key="item.name" :label="item.name" :value="item.name"> </el-option> </el-select> </template> @@ -198,18 +156,9 @@ <el-col :span="4" style="font-size: 14px;text-align: right;">工艺:</el-col> <el-col :span="16" :offset="1"> <template> <el-select v-model="edit.techName" placeholder="请选择" disabled style="width: 306px;" allow-create filterable > <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id"> <el-select v-model="edit.techName" placeholder="请选择" disabled style="width: 306px;" allow-create filterable> <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </template> @@ -240,18 +189,14 @@ </span> </el-dialog> </div> <!-- 新增弹窗 --> <div> <el-dialog title="技术指标新增" :visible.sync="dialogVisible" width="40%" > <el-dialog title="技术指标新增" :visible.sync="dialogVisible" width="40%"> <el-form ref="form" :model="form" label-width="80px"> <el-form-item label="类型"> <template> <el-select v-model="form.type" size="small" placeholder="请选择" @change="edittype" style="width: 554px;margin-right: 30px;"> <el-select v-model="form.type" size="small" placeholder="请选择" @change="edittype" style="width: 554px;margin-right: 30px;"> <el-option label="橡胶连接器" :value="0"></el-option> <el-option label="金属连接器" :value="1"></el-option> <el-option label="湿插拔电连接器" :value="2"></el-option> @@ -263,16 +208,8 @@ <el-col :span="11"> <el-form-item label="工序"> <template> <el-select v-model="form.work" placeholder="请选择" allow-create filterable @change="workevent" > <el-option v-for="(item,index) in process" :key="item.name" :label="item.name" <el-select v-model="form.work" placeholder="请选择" allow-create filterable @change="workevent"> <el-option v-for="(item,index) in process" :key="item.name" :label="item.name" :value="item.name"> </el-option> </el-select> @@ -282,16 +219,8 @@ <el-col :span="11" :offset="2"> <el-form-item label="工艺"> <template> <el-select v-model="form.name" placeholder="请选择" allow-create filterable > <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id"> <el-select v-model="form.name" placeholder="请选择" allow-create filterable> <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </template> @@ -303,17 +232,8 @@ <el-col :span="11"> <el-form-item label="项目组" > <template> <el-select v-model="form.father" placeholder="请选择" allow-create filterable @create="electadd" > <el-option v-for="item in higherlevel" :key="item" :label="item" :value="item"> <el-select v-model="form.father" placeholder="请选择" allow-create filterable @create="electadd"> <el-option v-for="item in higherlevel" :key="item" :label="item" :value="item"> </el-option> </el-select> <!-- <el-autocomplete @@ -354,7 +274,6 @@ </el-dialog> </div> </div> </div> </div> </template> @@ -407,7 +326,6 @@ mounted() { this.selectAllleft() this.selectAllright() }, methods:{ // 表格树全部选中配置 @@ -581,7 +499,10 @@ //主体左 selectAllleft() { this.$axios.get(this.$api.url.selectAllleft,{ params:{type:this.typeselect,message:this.search.technology} params: { type: this.typeselect, message: this.search.technology } }).then(res => { this.list = res.data; console.log(this.list); @@ -601,7 +522,9 @@ }, selectAllrightStart(name) { this.$axios.get(this.$api.url.selectAllright,{ params:{id:name} params: { id: name } }).then(res => { this.tableData = res.data; console.log(this.tableData); @@ -615,7 +538,9 @@ //右 selectAllright() { this.$axios.get(this.$api.url.selectAllright,{ params:{id:this.checkTreeNode.id} params: { id: this.checkTreeNode.id } }).then(res => { this.tableData = res.data; console.log(this.tableData); @@ -625,7 +550,9 @@ chooseProFath() { console.log(this.checkTreeNode.id); this.$axios.get(this.$api.url.chooseProFath,{ params:{techTemId:this.checkTreeNode.id} params: { techTemId: this.checkTreeNode.id } }).then(res => { this.higherlevel = res.data; console.log(this.higherlevel); @@ -638,7 +565,9 @@ //工序工艺 chooseTechFath() { this.$axios.get(this.$api.url.chooseTechFath,{ params:{type:this.typeselect} params: { type: this.typeselect } }).then(res => { this.process = res.data; console.log(this.process); @@ -672,7 +601,6 @@ // rows.splice(index, 1); // }, handleSelectionChange(val) { console.log(val); this.selects = val; }, //编辑 @@ -719,7 +647,7 @@ .thing { width: 100%; height: calc(100% - 120px); height: calc(100% - 78px); background-color: #fff; display: flex; } @@ -729,6 +657,7 @@ height: calc(100% - 20px); border-right: 3px solid rgb(245, 247, 251); padding: 16px; overflow-y: auto; } .thing .left .custom-tree-node span { @@ -768,6 +697,7 @@ color: #004ea0; cursor: pointer; } .firstDiv { /* float: left; width: 20px; @@ -781,6 +711,7 @@ margin-right: 8px; */ /* border-radius: 60px; */ } .el-tag{ border-radius: 50%; } src/components/view/equipmentmaintain.vue
@@ -245,7 +245,6 @@ placeholder="请输入搜索内容" size="small" clearable ></el-input> <el-tree :data="list" ref="tree" style="height: 500px;overflow-y: auto;" :props="{children: 'children',label: 'name'}" highlight-current node-key="name" default-expand-all @node-click="handleNodeClick" @@ -707,6 +706,7 @@ height: calc(100% - 20px); border-right: 3px solid rgb(245, 247, 251); padding: 16px; overflow-y: auto; } .thing .left .custom-tree-node span { src/components/view/mbom.vue
@@ -10,17 +10,14 @@ </el-row> </div> <div> <el-dialog title="物料清单的维护" :visible.sync="dialogVisible" width="80%" :before-close="handleClose" :center="true"> <el-dialog title="物料清单的维护" :visible.sync="dialogVisible" width="80%" :before-close="handleClose" :center="true"> <div> <el-form> <el-row :gutter="2"> <el-col :span="8"> <el-form-item label="类型:"> <el-select v-model="search.type" size="small" placeholder="请选择" style="width: 224px;margin-right: 30px;"> <el-select v-model="search.type" size="small" placeholder="请选择" style="width: 224px;margin-right: 30px;"> <el-option label="橡胶连接器" :value="0"></el-option> <el-option label="金属连接器" :value="1"></el-option> <el-option label="湿插拔电连接器" :value="2"></el-option> @@ -31,17 +28,8 @@ <el-col :span="8"> <el-form-item label="工序"> <template> <el-select v-model="search.work" placeholder="请选择" allow-create filterable @change="workevent" > <el-option v-for="(item,index) in process" :key="item.name" :label="item.name" :value="item.name"> <el-select v-model="search.work" placeholder="请选择" allow-create filterable @change="workevent"> <el-option v-for="(item,index) in process" :key="item.name" :label="item.name" :value="item.name"> </el-option> </el-select> </template> @@ -49,12 +37,9 @@ </el-col> <el-col :span="8"> <el-form-item label="工艺名称:"> <el-select v-model="search.craft" size="small" placeholder="请选择" style="width: 224px;margin-right: 30px;"> <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id"> <el-select v-model="search.craft" size="small" placeholder="请选择" style="width: 224px;margin-right: 30px;"> <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id"> </el-option> </el-select> </el-form-item> @@ -65,46 +50,30 @@ </div> <div style="margin: 10px 0px;"> <template> <el-table border :data="tableapi" height="calc(80vh - 250px)" style="width: 100%"> <el-table border :data="tableapi" height="calc(80vh - 250px)" style="width: 100%"> <el-table-column type="index" label="序号" width="70"> </el-table-column> <el-table-column prop="date" label="供应商名称" width="180"> <el-table-column prop="date" label="供应商名称" width="180"> <template slot-scope="scope"> <el-input v-model="scope.row.supplier" placeholder="" ></el-input> </template> </el-table-column> <el-table-column prop="" label="质量追溯号" width="180"> <el-table-column prop="" label="质量追溯号" width="180"> <template slot-scope="scope"> <el-input v-model="scope.row.qualityTraceability" placeholder="" ></el-input> </template> </el-table-column> <el-table-column prop="name" label="原材料名称"> <el-table-column prop="name" label="原材料名称"> <template slot-scope="scope"> <el-input v-model="scope.row.name" placeholder="" ></el-input> </template> </el-table-column> <el-table-column prop="address" label="规格型号"> <el-table-column prop="address" label="规格型号"> <template slot-scope="scope"> <el-input v-model="scope.row.specifications" placeholder="" ></el-input> </template> </el-table-column> <el-table-column prop="unit" label="单位"> <el-table-column prop="unit" label="单位"> <template slot-scope="scope"> <el-input v-model="scope.row.unit" placeholder="" ></el-input> </template> @@ -118,10 +87,10 @@ </span> </el-dialog> </div> <div class="choose"> <span>类型:</span> <el-select v-model="search.type" size="small" @change="TYpe" placeholder="请选择" style="width: 224px;margin-right: 30px;"> <el-select v-model="search.type" size="small" @change="TYpe" placeholder="请选择" style="width: 224px;margin-right: 30px;"> <el-option label="橡胶连接器" :value="0"></el-option> <el-option label="金属连接器" :value="1"></el-option> <el-option label="湿插拔电连接器" :value="2"></el-option> @@ -136,14 +105,10 @@ </div> <div class="thing"> <div class="left"> <el-input v-model="search.technology" @input="query" suffix-icon="el-icon-search" placeholder="请输入搜索内容" size="small" clearable ></el-input> <el-tree :data="list" ref="tree" style="height: 500px;overflow-y: auto;" highlight-current :props="{children: 'children',label: 'name'}" node-key="name" default-expand-all <el-input v-model="search.technology" @input="query" suffix-icon="el-icon-search" placeholder="请输入搜索内容" size="small" clearable></el-input> <el-tree :data="list" ref="tree" style="overflow-y: auto;" highlight-current :props="{children: 'children',label: 'name'}" node-key="name" default-expand-all @node-click="handleNodeClick" > <div class="custom-tree-node" slot-scope="{ node, data }"> <span><i :class="`node_i ${data.code != '[2]'?'el-icon-folder-opened':'el-icon-tickets'}`"></i> @@ -242,7 +207,9 @@ //新增 chooseTechFath() { this.$axios.get(this.$api.url.chooseTechFath,{ params:{type:this.typeselect} params: { type: this.typeselect } }).then(res => { this.process = res.data; console.log(this.process); @@ -336,7 +303,9 @@ //右边 selectAllMbom() { this.$axios.get(this.$api.url.selectAllMbom,{ params:{id:this.checkTreeNode.id} params: { id: this.checkTreeNode.id } }).then(res => { this.tableData = res.data; console.log(this.tableData); @@ -435,6 +404,7 @@ .title * { font-size: 16px; } .choose-1{ padding: 5px 24px; display: flex; @@ -474,6 +444,7 @@ height: calc(100% - 20px); border-right: 3px solid rgb(245, 247, 251); padding: 16px; overflow-y: auto; } .thing .left .custom-tree-node span { src/components/view/processInspection.vue
@@ -5,137 +5,70 @@ <el-row> <el-col :span="12">过程检验</el-col> <el-col :span="12" style="text-align: right;"> <el-button @click="handleAddNew" type="primary" size="mini" icon="el-icon-plus" style="background: #004EA2; " >新增</el-button > <el-button @click="handleAddNew" type="primary" size="mini" icon="el-icon-plus" style="background: #004EA2; ">新增</el-button> <el-button icon="el-icon-download" size="mini">导出</el-button> </el-col> </el-row> </div> <div class="nav"> <span>检验状态:</span> <el-select size="small" v-model="search.result" placeholder="请选择检测状态" style="width: 224px;margin-right: 52px;" > <el-select size="small" v-model="search.result" placeholder="请选择检测状态" style="width: 224px;margin-right: 52px;"> <el-option :value="''" label="全部"></el-option> <el-option :value="1" label="已检测"></el-option> <el-option :value="2" label="待检测"></el-option> </el-select> <span>产品名称:</span> <el-input size="small" style="width: 224px;margin-right: 30px;" v-model="search.name" placeholder="请输入产品名称" ></el-input> <el-input size="small" style="width: 224px;margin-right: 30px;" v-model="search.name" placeholder="请输入产品名称"></el-input> <span>工序:</span> <el-input size="small" style="width: 224px;margin-right: 30px;" v-model="search.techfather" placeholder="请输入工序" ></el-input> <el-input size="small" style="width: 224px;margin-right: 30px;" v-model="search.techfather" placeholder="请输入工序"></el-input> <el-button size="mini"><span>重 置</span></el-button> <el-button size="mini" type="primary" style="background: #004EA2;" ><span>查 询</span></el-button > <el-button size="mini" type="primary" style="background: #004EA2;"><span>查 询</span></el-button> </div> <div class="content-body"> <div class="inspectionTable"> <el-table ref="inspectionTable" height="calc(100vh - 320px)" :cell-style="{ textAlign: 'center' }" <el-table ref="inspectionTable" height="calc(100vh - 320px)" :cell-style="{ textAlign: 'center' }" :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center' }" border :data="inspectionTable" style="width: 100%" > }" border :data="inspectionTable" style="width: 100%"> <el-table-column type="selection" width="50"> </el-table-column> <el-table-column label="序号" type="index" width="60" ></el-table-column> <el-table-column prop="order_number" label="订单编号" min-width="90" /> <el-table-column label="序号" type="index" width="60"></el-table-column> <el-table-column prop="order_number" label="订单编号" min-width="90" /> <el-table-column prop="material" label="产品名称" min-width="80" /> <el-table-column prop="specifications_model" label="规格型号" min-width="60" /> <el-table-column prop="specifications_model" label="规格型号" min-width="60" /> <el-table-column prop="techfather" label="工序" min-width="70" /> <el-table-column prop="techname" label="工艺名称" min-width="70" /> <el-table-column prop="unit" label="单位" min-width="50" /> <el-table-column prop="quantity" label="数量" min-width="50" /> <el-table-column prop="createTime" label="报检日期" min-width="60" /> <el-table-column prop="createTime" label="报检日期" min-width="60" /> <el-table-column prop="name" label="报检人" min-width="50" /> <el-table-column prop="updateTime" label="检测日期" min-width="60" /> <el-table-column prop="updateTime" label="检测日期" min-width="60" /> <el-table-column prop="result" label="合格状态" min-width="80"> <template slot-scope="scope"> <span style="color: #34BD66;" v-if="scope.row.result == 1" >合格</span > <span style="color: #E84738;" v-else-if="scope.row.result == 0" >不合格</span > <span style="color: #34BD66;" v-if="scope.row.result == 1">合格</span> <span style="color: #E84738;" v-else-if="scope.row.result == 0">不合格</span> </template> </el-table-column> <el-table-column label="操作" min-width="80"> <template slot-scope="scope"> <el-button type="text" size="small" style="margin-left: 0;" >详情</el-button > <el-button type="text" size="small" @click="handleClick(scope.row)" >查看</el-button > <el-button type="text" size="small" style="margin-left: 0;" >编辑</el-button > <el-button type="text" size="small" style="margin-left: 0;">详情</el-button> <el-button type="text" size="small" @click="handleClick(scope.row)">查看</el-button> <el-button type="text" size="small" style="margin-left: 0;">编辑</el-button> </template> </el-table-column> </el-table> </div> <!-- 分页器 --> <div class="pagination"> <el-pagination :current-page="1" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="inspectionTableTotal" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> <el-pagination :current-page="1" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="inspectionTableTotal" @size-change="handleSizeChange" @current-change="handleCurrentChange" /> </div> </div> </div> @@ -146,109 +79,60 @@ <el-col :span="12">新增过程检验单</el-col> <el-col :span="12" style="text-align: right;"> <!-- 点击返回,当前页面值为false --> <el-button type="primary" size="mini" style="background: #004EA2; " icon="el-icon-circle-plus-outline" >新增</el-button > <el-button @click="showAddPage = false" type="primary" size="mini" icon="el-icon-back" style="background: #004EA2; " >返回</el-button > <el-button type="primary" size="mini" style="background: #004EA2; " icon="el-icon-circle-plus-outline">新增</el-button> <el-button @click="showAddPage = false" type="primary" size="mini" icon="el-icon-back" style="background: #004EA2; ">返回</el-button> </el-col> </el-row> <el-form :model="addInspectionform" ref="addInspectionform" class="addInspectionform" label-position="right" label-width="120px" size="small" > <el-form :model="processInspectVo" ref="addInspectionform" class="addInspectionform" label-position="right" label-width="120px" size="small"> <div class="formwrapper"> <el-row :gutter="230"> <el-col :span="7"> <el-form-item label="订单号:"> <el-input style="width: 210px;" size="small" v-model="addInspectionform.number" placeholder="请输入订单号" /> <el-input @blur="selectInfoByOrderId" style="width: 210px;" size="small" v-model="processInspectVo.orderNumber" placeholder="请输入订单号" /> </el-form-item> </el-col> <el-col :span="7"> <el-form-item label="产品名称:"> <el-input style="width: 210px;" size="small" v-model="addInspectionform.code" placeholder="请输入产品编码" /> <el-select style="width: 210px;" size="small" @change="selectSample" v-model="processInspectVo.material" placeholder="请选择产品"> <el-option v-for="item in optionsSamplename" :key="item.value" :label="item.name" :value="item.name"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="7"> <el-form-item label="产品编码:"> <el-input style="width: 210px;" size="small" disabled v-model="addInspectionform.code" placeholder="请输入产品编码" /> <el-input style="width: 210px;" size="small" disabled v-model="processInspectVo.materialCode" placeholder="请输入产品编码" /> </el-form-item> </el-col> </el-row> <el-row :gutter="230"> <el-col :span="7"> <el-form-item label="规格型号:"> <el-input style="width: 210px;" size="small" disabled v-model="addInspectionform.number" placeholder="请输入规格型号" /> <el-input style="width: 210px;" size="small" disabled v-model="processInspectVo.specificationsModel" placeholder="请输入规格型号" /> </el-form-item> </el-col> <el-col :span="7"> <el-form-item label="工序名称:"> <el-select v-model="value" placeholder="请选择" style="width: 210px;" size="small" > <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" > <el-select @change="changeOptionSoptionSprocesses" v-model="processInspectVo.techfather" placeholder="请选择" style="width: 210px;" size="small"> <el-option v-for="item in optionSoptionSprocesses" :key="item.name" :label="item.name" :value="item.name"> </el-option> </el-select> </el-form-item> </el-col> <el-col :span="7"> <el-form-item label="工艺名称:"> <el-select v-model="value" placeholder="请选择" style="width: 210px;" size="small" > <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" > <el-select v-model="processInspectVo.techname" placeholder="请选择" style="width: 210px;" size="small"> <el-option v-for="item in optionTechnology" :key="item.id" :label="item.name" :value="item.id + '-' + item.name"> </el-option> </el-select> </el-form-item> @@ -257,31 +141,17 @@ <el-row :gutter="230"> <el-col :span="7"> <el-form-item label="单位:"> <el-input style="width: 210px;" size="small" disabled v-model="addInspectionform.quantity" placeholder="请输入单位" /> <el-input style="width: 210px;" size="small" disabled v-model="processInspectVo.unit" placeholder="请输入单位" /> </el-form-item> </el-col> <el-col :span="7"> <el-form-item label="数量:"> <el-input style="width: 210px;" size="small" v-model="addInspectionform.quantity" placeholder="请输入数量" /> <el-input style="width: 210px;" size="small" v-model="processInspectVo.quantity" placeholder="请输入数量" /> </el-form-item> </el-col> <el-col :span="7"> <el-button type="primary" style="float: right; font-size: 14px; !important" >生成检验项目</el-button > <el-col :span="10" style="display: flex;justify-content: end;"> <el-button type="primary" @click="addTestProjevt">生成检验项目</el-button> </el-col> </el-row> </div> @@ -291,90 +161,50 @@ <el-row> <el-col :span="12" class="inspectionProject_span">检验项目</el-col> <el-col :span="12" class="inspectionProject_span"> <el-button size="mini" @click="clickDeleteInspectionColumn()" >删除检验值列</el-button > <el-button style="margin-right: 30px;" size="mini" @click="clickAddInspectionColumn()" >添加检验值列</el-button > <el-button <el-button size="mini" @click="clickDeleteInspectionColumn()">删除检验值列</el-button> <el-button style="margin-right: 30px;" size="mini" @click="clickAddInspectionColumn()">添加检验值列</el-button> <!-- <el-button size="mini" style="margin-right: 30px;" @click="clickAddLine()" >添加检验行</el-button > > --> </el-col> </el-row> <el-table :data="inspectionItems" height="calc(100vh - 550px)" style="width: 100%" > <el-table-column type="index" label="序号" width="60" ></el-table-column> <el-table-column prop="material" label="项目"></el-table-column> <el-table :row-key="inspectionItems.id" :data="inspectionItems" max-height="420" :span-method="handleSpanMethod" height="calc(100vh - 550px)" style="width: 100%"> <el-table-column type="index" label="序号" width="60"></el-table-column> <el-table-column label="项目" prop="father"></el-table-column> <el-table-column prop="name" label="指标"></el-table-column> <el-table-column prop="unit" label="单位"></el-table-column> <el-table-column prop="standardVal" label="标准值"></el-table-column> <el-table-column prop="controlVal" label="内测值"></el-table-column> <el-table-column prop="testValue" label="检测值" min-width="150" v-for="(item, index) in empiricalValueAdd" :key="index" > <el-table-column prop="required" label="标准值"></el-table-column> <el-table-column prop="internal" label="内测值"></el-table-column> <el-table-column prop="inspectionValue" label="检测值" min-width="100" style="text-align: center;"> <template slot-scope="scope"> <el-tooltip :disabled="scope.row.deviceId != null" class="item" effect="dark" content="请先选择设备!" placement="top-start" > <el-input :disabled="scope.row.deviceId == null" // v-model="scope.row.testValueList[index]" @blur="changeState(scope.row, index)" placeholder="请输入检测值" ></el-input> <el-tooltip :disabled="scope.row.deviceId != null" class="item" effect="dark" content="请先选择设备!" placement="top-start"> <el-input :disabled="scope.row.deviceId === null" :value="item" @blur="changeState(scope.row, index)" placeholder="请输入检测值"></el-input> </el-tooltip> </template> </el-table-column> <el-table-column label="试验设备"> <template slot-scope="scope"> {{ scope.row.device }} <el-select v-model="scope.row.device" size="small" slot="append" style="width: 100px;" > <el-select v-model="scope.row.device" size="small" slot="append" style="width: 100px;"> <el-option value="选项1"></el-option> <el-option value="选项2"></el-option> </el-select> </template> </el-table-column> <el-table-column prop="conclusion" label="结论"> <el-table-column label="结论"> <template slot-scope="scope"> <span style="color: #34BD66;" v-if="scope.row.insState == 1" >合格</span > <span style="color: #E84738;" v-else-if="scope.row.insState == 0" >不合格</span > <span style="color: #34BD66;" v-if="scope.row.result === 1">合格</span> <span style="color: #E84738;" v-else-if="scope.row.result === 0">不合格</span> </template> </el-table-column> <el-table-column v-if="detailId == null" label="操作" width="100"> <template slot-scope="scope"> <el-button type="text" @click="clickDeleteline(scope)" >删除</el-button > <el-button type="text" @click="clickDeleteline(scope)">删除</el-button> </template> </el-table-column> </el-table> @@ -397,6 +227,7 @@ export default { data() { return { detailId: null, search: { countSize: 10, pageSize: 1, @@ -404,13 +235,29 @@ name: "", // 产品名称 techfather: "" // 工序 }, optionsSamplename: [], inspectionTable: [], optionSoptionSprocesses: [], optionTechnology: [], inspectionTableTotal: "", treeProject: [], // 添加列 empiricalValueAdd: 1, empiricalValueAdd: [], // 编辑时存储最长的列数字,做删除判断 empiricalValueAddMaxNumber: 0, showAddPage: false, processInspectVo: { material: null, materialCode: null, orderNumber: "D-001", quantity: null, specificationsModel: null, techfather: null, techname: null, technologyId: null, unit: null }, InspectioniD: null, addInspectionform: [ { number: "", @@ -425,8 +272,8 @@ group: "", worker: "", machine: "" } ], }] , inspectionItems: [], // 新增检验项目表格 inspectionResultForm: [ { @@ -437,36 +284,151 @@ operation: "" } ], options: [ { value: "选项1", label: "黄金糕" }, { value: "选项2", label: "双皮奶" }, { value: "选项3", label: "蚵仔煎" }, { value: "选项4", label: "龙须面" }, { value: "选项5", label: "北京烤鸭" } ], value: "" options: [], value: "", rowList: [], spanArr: [], position: 0 }; }, mounted() { // this.getTableData() }, methods: { // 每页条数改变时触发 选择一页显示多少行 handleSizeChange(val) { this.search.countSize = val; this.defaultInitializationTable(); }, getInsArr(val){ console.log(val); return val.split(",") }, handleSpanMethod({ row, column, rowIndex, columnIndex }) { if (columnIndex === 0) { const _row = this.spanArr[rowIndex]; const _col = _row>0 ? 1 : 0; return { rowspan: _row, colspan: _col } } if(columnIndex === 1){ const _row = this.spanArr[rowIndex]; const _col = _row>0 ? 1 : 0; return { rowspan: _row, colspan: _col } } }, // 合并表格 mergeTable() { this.rowList=[] this.spanArr=[] this.position=0 this.inspectionItems.forEach((item,index) => { if( index === 0){ this.spanArr.push(1); this.position = 0; }else{ if(this.inspectionItems[index].father === this.inspectionItems[index-1].father ){ this.spanArr[this.position] += 1; this.spanArr.push(0); }else{ this.spanArr.push(1); this.position = index; } } }) }, changeOptionSoptionSprocesses() { this.optionTechnology = [] let working = this.optionSoptionSprocesses.filter(item => { return item.name === this.processInspectVo.techfather })[0] this.optionTechnology = working.children }, addTestProjevt() { let val = JSON.parse(JSON.stringify(this.processInspectVo)) val.techname = this.processInspectVo.techname.split("-")[1] val.technologyId = this.processInspectVo.techname.split("-")[0] this.$axios.post(this.$api.url.processInspectAddProcess, { material: val.material, materialCode: val.materialCode, orderNumber: val.orderNumber, quantity: val.quantity, specificationsModel: val.specificationsModel, techfather: val.techfather, techname: val.techname, technologyId: val.technologyId, unit: val.unit }, { headers: { "Content-Type": "application/json" } }).then(res => { if (res.code === 201) { this.$message({ message: res.message, type: 'warning' }); return } this.InspectioniD = res.data this.getTableData() }) }, getTableData() { this.$axios.get(this.$api.url.inspectionItemListUser, { params: { id: 28, type: 1 } }).then(res => { this.inspectionItems = res.data let arr = [] let val=JSON.parse(JSON.stringify(this.inspectionItems)) //转成一维数组 val.forEach(l => { let father = l.father l.children.forEach(c => { c.father = father c.empiricalValueAdd=[] arr.push(c) }) }) this.inspectionItems = arr console.log(this.inspectionItems); this.mergeTable(arr) }) }, selectSample() { let sample = this.optionsSamplename.filter(item => { return item.name === this.processInspectVo.material })[0] this.processInspectVo.techfather = null this.processInspectVo.techname = null this.processInspectVo.materialCode = sample.code this.processInspectVo.specificationsModel = sample.specifications this.processInspectVo.unit = sample.unit this.optionSoptionSprocesses = [] this.optionSoptionSprocesses = sample.children }, selectInfoByOrderId() { this.$axios.get(this.$api.url.chooseMaterProcessInspect, { params: { orderNumber: this.processInspectVo.orderNumber } }).then(res => { if (res.data.length > 0) { console.log(res.data); this.optionsSamplename = res.data } else { this.$message({ message: '没有该订单号!', type: 'warning' }); } }) }, // 当前页改变时触发 跳转其他页 handleCurrentChange(val) { @@ -476,6 +438,7 @@ // 显示新增页面 handleAddNew() { this.showAddPage = true; this.getTableData() }, // 表格初始化接口 defaultInitializationTable() { @@ -535,52 +498,66 @@ align-items: center; background-color: #fff; } .table_header { height: calc(100vh - 550px); } .nav * { font-size: 14px; } .content-body .rawPage { background-color: #fff; overflow: hidden; } .inspectionTable { padding: 20px 20px; } .pagination { float: right; margin-right: 20px; } .newPage { overflow: hidden; } .header { padding: 12px; } .addInspectionform { background-color: #fff; } .addInspectionform .formwrapper { padding: 20px 0px; margin-left: 100px; } .inspectionProject .el-table { background-color: #fff; padding: 10px 12px; } .inspectionResult span { display: block; padding: 5px 0px; } .inspectionResult .el-table { background-color: #fff; padding: 10px 12px; } .inspectionProject_span { line-height: 32px; padding: 10px 20px; } .inspectionProject_span .el-button { float: right; font-size: 13px !important; src/components/view/record-content.vue
@@ -46,6 +46,7 @@ height: calc(100% - 20px); border-right: 3px solid rgb(245, 247, 251); padding: 16px; overflow-y: auto; } .thing .left .custom-tree-node span { @@ -141,7 +142,6 @@ <div class="left"> <el-input v-model="search.technology" suffix-icon="el-icon-search" placeholder="请输入搜索内容" size="small" clearable @input="query"></el-input> <el-tree :data="list" ref="tree" style="height: 500px;overflow-y: auto;" :props="{children: 'children',label: 'name'}" node-key="name" default-expand-all @node-click="handleNodeClick" highlight-current :key="upIndex"> src/components/view/sale.vue
@@ -132,9 +132,8 @@ <span>状态:</span> <el-select v-model="search.type" size="small" placeholder="请选择" style="width: 224px;margin-right: 30px;"> <el-option label="全部" :value="null"></el-option> <el-option label="通过" :value="0"></el-option> <el-option label="不通过" :value="1"></el-option> <el-option label="未审核" :value="2"></el-option> <el-option label="通过" :value="1"></el-option> <el-option label="不通过" :value="0"></el-option> </el-select> <span>交货日期:</span> <el-date-picker v-model="search.delTime" size="small" placeholder="请输入" style="width: 224px;margin-right: 30px;" @@ -174,7 +173,8 @@ <span class="table_do" @click="changeShowDetail(scope.row)"> 查看详情 </span> <span class="table_do" v-if="scope.row.type==null" @click="saleCheck(scope)"> 审核 </span> <span class="table_do" v-else> </span> <span class="table_do" @click="openUpDia(scope.row.id)"> 编辑 </span> <span class="table_do" v-if="scope.row.type==null" @click="openUpDia(scope.row.id)"> 编辑 </span> <span class="table_do" v-else> </span> <span class="table_do" @click="delSale(scope.$index)"> 删除 </span> </template> </el-table-column> @@ -402,7 +402,7 @@ delTime: null }, tableData: [], selects: [], selects: '', currentPage: 1, countSize: 0, pageSize: 10, @@ -430,7 +430,13 @@ }, methods: { handleSelectionChange(val) { this.selects = val.id; this.selects = '' val.forEach((a, ai)=>{ this.selects += a.id if(ai!=val.length-1){ this.selects += ',' } }) }, handleSizeChange(val) { this.pageSize = val @@ -456,7 +462,7 @@ }) }, clean() { this.selects = [] this.selects = '' this.currentPage = 1 this.countSize = 0 this.pageSize = 10 @@ -464,7 +470,8 @@ formTime: null, createTime: null, insState: 2, judgeState: 2 judgeState: 2, type: null } this.selectRawInspectsList() }, @@ -565,7 +572,6 @@ }) }, upSale() { console.log(this.addData); for (var b = 0; b < this.addData.saleMaterialList.length; b++) { if (Object.keys(this.addData.saleMaterialList[b]).length == 0) { this.addData.saleMaterialList.splice(b, 1) @@ -581,7 +587,8 @@ } } for (var a in this.addData) { if ((this.addData[a] == null || this.addData[a] == '') && a != 'type') { console.log(a); if ((this.addData[a] == null || this.addData[a] == '') && a!='checkname' && a!='checkTime' && a != 'type') { if (a == 'saleMaterialList') { this.$message.error('产品信息不能为空') } else { @@ -612,13 +619,12 @@ }) }, delSales(){ console.log(this.selects); if(this.selects=='') { this.$message.warning('请选择一条数据删除') return } this.axios.post(this.$api.url.delAllSale,{ ids: this.selects }, { headers: { 'Content-Type': 'application/json' } }).then(res=>{ this.$message.success('删除成功') this.selectRawInspectsList() src/components/view/self-inspection.vue
@@ -141,7 +141,7 @@ <div class="thing"> <div class="left"> <el-input v-model="search.technology" suffix-icon="el-icon-search" placeholder="请输入搜索内容" size="small" clearable @input="(val)=>$refs.tree.filter(val)"></el-input> <el-tree :data="list" style="height: 500px;overflow-y: auto;" ref="tree" :props="{children: 'children',label: 'name'}" node-key="name" default-expand-all <el-tree :data="list" ref="tree" :props="{children: 'children',label: 'name'}" node-key="name" default-expand-all @node-click="handleNodeClick" highlight-current @node-expand="nodeOpen" @node-collapse="nodeClose" :filter-node-method="filterNode" :key="upIndex"> <div class="custom-tree-node" slot-scope="{ node, data }"> src/components/view/standard-table/material.vue
@@ -40,6 +40,11 @@ <el-table-column prop="unit" label="单位"> </el-table-column> <el-table-column prop="num" label="数量"> <template slot-scope="scope"> <el-input v-model="scope.row.num" v-if="scope.row.mname != null" @blur="updateVal(scope.row)"></el-input> </template> </el-table-column> </el-table> </div> @@ -58,6 +63,16 @@ created() {}, mounted() {}, methods: { updateVal(row){ this.$axios.post(this.$api.url.mBomWrite,{ id : row.id, num : row.num }).then(res=>{ this.$message.success(res.message); }).catch(error=>{ this.$message.error(error.message); }) }, // 表格树全部选中配置 // 全选/取消选操作 selectAll(val) { @@ -146,8 +161,8 @@ .standard .el-table__body { height: 100%; } .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ /* .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ padding-left: 23px !important; } } */ </style> src/components/view/standard-table/product.vue
@@ -35,9 +35,9 @@ /* .standard .el-table__body { height: 100%; } */ .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ /* .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ padding-left: 23px !important; } } */ </style> <template> <div class="standard"> @@ -67,19 +67,37 @@ <span>{{scope.row.device}}</span> </template> </el-table-column> <el-table-column prop="productFather" label="项目"></el-table-column> <el-table-column prop="productFather" label="项目"> <template slot-scope="scope"> <el-tag type="info" v-if="scope.row.productFather != null">04</el-tag> <span>{{scope.row.productFather}}</span> </template> </el-table-column> <el-table-column prop="productFather" hidden></el-table-column> <el-table-column prop="unit" label="单位"></el-table-column> <el-table-column prop="product" label="指标"></el-table-column> <el-table-column label="操作"> <template slot-scope="scope"> <el-button type="text" @click="updateProduct(scope.row)">编辑</el-button> </template> </el-table-column> </el-table> </div> </template> <script> export default ({ data() { return { deviceGroupDialog:false, selects: [], isAllSelect:false, } }, props:['tableData','tableType'], methods:{ updateProduct(row){ console.log(row); }, // 表格树全部选中配置 // 全选/取消选操作 selectAll(val) { src/components/view/standard-table/target.vue
@@ -19,11 +19,16 @@ <span>{{scope.row.tname}}</span> </template> </el-table-column> <el-table-column prop="pname" label="指标名称"> <el-table-column prop="pfather" label="项目"> <template slot-scope="scope"> <el-tag type="info" color="#faf2ff" v-if="scope.row.pname != null"> <el-tag type="info" color="#faf2ff" v-if="scope.row.pfather != null"> <span style="color: #e1affb">03</span> </el-tag> <span>{{scope.row.pfather}}</span> </template> </el-table-column> <el-table-column prop="pname" label="指标名称"> <template slot-scope="scope"> <span>{{scope.row.pname}}</span> </template> </el-table-column> @@ -31,14 +36,14 @@ <el-table-column prop="internal" label="内控值"> <template slot-scope="scope"> <el-input v-model="scope.row.internal" v-if="scope.row.internal != null" v-if="scope.row.pname != null" @blur="updateVal(scope.row)"></el-input> </template> </el-table-column> <el-table-column prop="required" label="标准值"> <template slot-scope="scope"> <el-input v-model="scope.row.required" v-if="scope.row.required != null" v-if="scope.row.pname != null" @blur="updateVal(scope.row)"></el-input> </template> </el-table-column> @@ -164,8 +169,8 @@ /* .standard .el-table__body { height: 100%; } */ .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ /* .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ padding-left: 23px !important; } } */ </style> src/components/view/standard-table/technology.vue
@@ -35,7 +35,7 @@ <el-table-column prop="pq" label="生产定额(个/天)"> <template slot-scope="scope"> <el-input v-model="scope.row.pq" v-if="scope.row.pq != null" v-if="scope.row.dg != null" @blur="updatePq(scope.row)" ></el-input> </template> @@ -65,9 +65,7 @@ } }, props:['tableData','tableType'], created() { console.log(this.tableData) }, created() {}, mounted() { }, methods: { @@ -190,7 +188,7 @@ /* .standard .el-table__body { height: 100%; } */ .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ /* .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ padding-left: 23px !important; } } */ </style> src/components/view/standard.vue
@@ -5,9 +5,8 @@ <el-col :span="12" style="line-height: 32px;">标准BOM</el-col> <el-col :span="12" style="text-align: right;"> <el-button type="primary" icon="el-icon-plus" style="background: #004EA2;" @click="showBomAddModel">新增</el-button> @click="bomAddModelVisible = true">新增</el-button> <el-button icon="el-icon-plus">新增版本</el-button> <el-button @click="bomRightUp=true" icon="el-icon-edit-outline">修改</el-button> <el-button @click="bomRightDl=true" icon="el-icon-delete">删除</el-button> </el-col> </el-row> @@ -33,8 +32,6 @@ </div> </el-tree> </div> <div class="right"> <div class="choose"> <span>类型:</span> @@ -46,180 +43,253 @@ <el-option :value="3" label="生产工艺"></el-option> </el-select> <span>{{ tableType == 1 ? '项目:' : '工艺名称:' }}</span> <el-input v-model="searchName" size="small" placeholder="请输入" style="width: 224px;margin-right: 24px;" <el-input v-model="searchName" size="small" placeholder="请输入" style="width: 224px;margin-right: 50px;" clearable></el-input> <span>{{ tableType == 1 ? '版本:' : '版本:' }}</span> <el-select size="small" v-model="VER" @change="verevent" style="width: 280px;" placeholder="请选择"> <span>版本:</span> <el-select v-model="version2" @change="verevent" size="small" style="width: 280px;margin-right: 10px;" placeholder="请选择"> <el-option v-for="item in version" :key="item" :label="item" :value="item"> </el-option> </el-select> <el-button style="margin-left:10px;" size="mini" @click="() => { searchName = ''; selectProductTableData() }"><span>重 置</span></el-button> <el-button size="mini" @click="() => { searchName = ''; selectProductTableData() }"><span>重 置</span></el-button> <el-button size="mini" type="primary" style="background: #004EA2;" @click="selectProductTableData"><span>查 询</span></el-button> </div> <div v-if="this.typeselect == 0"> <div class="contentTable" v-if="this.typeselect == 0"> <technology :tableType="tableType" :tableData="tableData"></technology> </div> <div v-if="this.typeselect == 1"> <target :tableType="tableType" :tableData="tableData"></target> </div> <div v-if="this.typeselect == 2"> <material :tableType="tableType" :tableData="tableData"></material> <bom :tableType="tableType" :tableData="tableData"></bom> </div> <div v-if="this.typeselect == 3"> <product :tableType="tableType" :tableData="tableData"></product> </div> <div v-if="this.typeselect == 3">生产工艺</div> </div> </div> <div class="bom-add-model"> <el-dialog title="BOM新增" :visible.sync="bomAddModelVisible" width="35%"> <el-dialog title="BOM新增" :visible.sync="bomAddModelVisible" width="45%"> <!-- 工艺路线 --> <div v-if="typeselect == 0">、 <el-form :model="technologyForm" :inline="true" class="demo-form-inline" label-position="right" :rules="boomRules" ref="boomForm" label-width="90px"> <el-form-item label="工序:" prop="father" width="250"> <el-select v-model="technologyForm.father" style="width:200px;" placeholder="请输入或选择工序"> <div v-if="typeselect == 0"> <el-form :model="technologyForm" :inline="true" label-position="right" ref="technologyForm" :rules="technologyRules" label-width="90px"> <el-form-item label="工序:" prop="tefather"> <el-select id="tefather" size="small" filterable allow-create default-first-option v-model="technologyForm.tefather" placeholder="请输入或选择工序"> <el-option :value="item.father" :label="item.father" v-for="(item,index) in fatherList" :key="index"></el-option> </el-select> </el-form-item> <el-form-item label="工艺名称:" prop="name" width="250"> <el-input placeholder="请输入工艺名称" style="width:200px;" v-model="technologyForm.name"></el-input> <el-form-item label="工艺名称:" prop="tename"> <el-input id="tename" size="small" placeholder="请输入工艺名称" clearable v-model="technologyForm.tename"></el-input> </el-form-item> <el-form-item label="设备组:" prop="deviceGroup" width="250"> <el-select placeholder="请选择设备组" style="width:200px;" <el-form-item label="设备组:" prop="deviceGroup"> <el-select id="deviceGroup" placeholder="请选择设备组" size="small" v-model="technologyForm.deviceGroup"> <el-option :value="item.father" v-for="(item,index) in deviceList" :key="index" :label="item.father"></el-option> </el-select> </el-form-item> <el-form-item label="生产定额:" prop="productionQuota" width="250"> <el-input style="width:200px;" v-model.number="technologyForm.productionQuota" placeholder="请输入生产定额" /> <el-form-item label="生产定额:" prop="productionQuota"> <el-input id="productionQuota" size="small" clearable v-model.number="technologyForm.productionQuota" placeholder="请输入生产定额" /> </el-form-item> </el-form> <div style="width:100%;text-align: right;"> <span slot="footer" class="dialog-footer" > <el-button type="primary" @click="confirmAdd('technologyForm')">确 定</el-button> <el-button @click="bomAddModelVisible = false">取 消</el-button> </span> </div> </div> <!-- 技术指标 --> <div v-if="typeselect == 1"> <el-form :model="targetForm" :inline="true" class="demo-form-inline" label-position="right" label-width="80px"> <el-form-item label="指标名称:" prop="father" width="250"> <el-input style="width:200px;" v-model="targetForm.pname" placeholder="请输入单位"/> <el-form :model="targetForm" :inline="true" label-position="right" :rules="targetRules" ref="targetForm" label-width="90px"> <el-form-item label="工序:" prop="pfather"> <el-select v-model="targetForm.pfather" @change="changeFather" style="width:200px;" placeholder="请选择工序"> <el-option :value="item.name" :label="item.name" v-for="(item,index) in targetFormList" :key="index"></el-option> </el-select> </el-form-item> <el-form-item label="单位:" prop="name" width="250"> <el-form-item label="工艺名称:" prop="technologyId"> <el-select v-model="targetForm.technologyId" @change="changeTechnologyId" style="width:200px;" placeholder="请选择工艺名称"> <el-option :value="item.id" :label="item.name" v-for="(item,index) in technologyIdList" :key="index"></el-option> </el-select> </el-form-item> <el-form-item label="项目:" prop="father"> <el-select v-model="targetForm.father" filterable allow-create default-first-option style="width:200px;" placeholder="请输入或选择项目"> <el-option :value="item.father" :label="item.father" v-for="(item,index) in projectList" :key="index"></el-option> </el-select> </el-form-item> <el-form-item label="指标名称:" prop="name"> <el-input style="width:200px;" v-model="targetForm.name" placeholder="请输入指标名称"/> </el-form-item> <el-form-item label="单位:" prop="unit"> <el-input style="width:200px;" v-model="targetForm.unit" placeholder="请输入单位"/> </el-form-item> <el-form-item label="内控值:" prop="dg" width="250"> <el-input style="width:200px;" v-model="targetForm.internal" placeholder="请输入单位"/> <el-form-item label="内控值:" prop="internal"> <el-input style="width:200px;" v-model="targetForm.internal" placeholder="请输入内控值"/> </el-form-item> <el-form-item label="标准值:" prop="unit" width="250"> <el-input style="width:200px;" v-model="targetForm.required" placeholder="请输入单位"/> <el-form-item label="标准值:" prop="required"> <el-input style="width:200px;" v-model="targetForm.required" placeholder="请输入标准值"/> </el-form-item> </el-form> <div style="width:100%;text-align: right;"> <span slot="footer" class="dialog-footer" > <el-button type="primary" @click="confirmAdd('targetForm')">确 定</el-button> <el-button @click="bomAddModelVisible = false">取 消</el-button> </span> </div> </div> <!-- 物料清单 --> <div v-if="typeselect == 2"> <el-form :model="materialForm" class="demo-form-inline" label-position="right" label-width="80px"> <el-row> <el-form :model="materialForm" label-position="right" :rules="materialRules" ref="materialForm" label-width="90px"> <el-row :gutter="100"> <el-col :span="12"> <el-form-item label="规格型号:" prop="father" width="250"> <el-input style="width:200px;" v-model="materialForm.pname" placeholder="请输入单位"/> <el-form-item label="工序:" prop="mfather"> <el-select placeholder="请选择工序" @change="changeMName" style="width:100%;" v-model="materialForm.mfather"> <el-option v-for="(item,index) in materialFormList" :key="index" :label="item.name" :value="item.name" ></el-option> </el-select> </el-form-item> </el-col> <el-col :span="12" style="text-align: right;"> <el-form-item label="产品大类:" prop="name" width="250"> <el-select placeholder="请选择产品大类" style="width:240px;" v-model="materialForm.dg"> <el-option value="1">1</el-option> <el-option value="2">2</el-option> <el-option value="3">3</el-option> <el-option value="4">4</el-option> <el-col :span="12"> <el-form-item label="工艺名称:" prop="mtechnologyId"> <el-select placeholder="请选择工艺名称" style="width:100%;" v-model="materialForm.mtechnologyId"> <el-option v-for="(item,index) in mIdList" :key="index" :value="item.id" :label="item.name"></el-option> </el-select> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="材料信息"></el-form-item> <el-form-item label="材料信息" style="font-weight: bold;"></el-form-item> </el-col> <el-col :span="12" style="text-align: right;"> <el-button size="mini" style="text-align: right;">添加行</el-button> <el-button size="mini" @click="addRowByMaterial">添加行</el-button> </el-col> </el-row> <el-row> <el-col :span="24"> <el-table > <el-table-column label="材料名称"></el-table-column> <el-table-column label="规格型号"></el-table-column> <el-table-column label="单位"></el-table-column> <el-table-column label="数量"></el-table-column> <el-table :data="materialForm.tableList" border max-height="470" style="width:100%;text-align: left;margin: 0;padding: 0;" :cell-style="{height:'20px',textAlign:'left'}" :header-cell-style="{height:'20px'}"> <el-table-column label="供应商名称"> <template slot-scope="scope"> <el-input size="mini" v-model="scope.row.supplier" placeholder="请输入"></el-input> </template> </el-table-column> <el-table-column label="质量追溯号"> <template slot-scope="scope"> <el-input size="mini" v-model="scope.row.qualityTraceability" placeholder="请输入"></el-input> </template> </el-table-column> <el-table-column label="原材料名称"> <template slot-scope="scope"> <el-input size="mini" v-model="scope.row.name" placeholder="请输入"></el-input> </template> </el-table-column> <el-table-column label="规格型号"> <template slot-scope="scope"> <el-input size="mini" v-model="scope.row.specifications" placeholder="请输入"></el-input> </template> </el-table-column> <el-table-column label="单位"> <template slot-scope="scope"> <el-input size="mini" v-model="scope.row.unit" placeholder="请输入"></el-input> </template> </el-table-column> <el-table-column label="数量"> <template slot-scope="scope"> <el-input size="mini" v-model="scope.row.num" placeholder="请输入"></el-input> </template> </el-table-column> </el-table> </el-col> </el-row> </el-form> <div style="width:100%;margin-top: 20px;margin-left:75%"> <span slot="footer" class="dialog-footer" > <el-button type="primary" @click="confirmAdd('materialForm')">确 定</el-button> <el-button @click="bomAddModelVisible = false">取 消</el-button> </span> </div> </div> <!-- 生产工艺 --> <div v-if="typeselect == 3"> <el-form :model="technologyForm" :inline="true" class="demo-form-inline" label-position="right" label-width="80px"> <el-form-item label="工序:" prop="father" width="250"> <el-select v-model="technologyForm.father" style="width:200px;" placeholder="请输入或选择生产定额"> <el-option value="1">1</el-option> <el-option value="2">2</el-option> <el-option value="3">3</el-option> <el-option value="4">4</el-option> <el-form :model="productForm" :inline="true" label-position="right" :rules="productRules" ref="productForm" label-width="90px"> <el-form-item label="工序:" prop="profather"> <el-select v-model="productForm.profather" style="width:200px;" @change="changeProduct" placeholder="请选择工序"> <el-option v-for="(item,index) in productFormList" :key="index" :value="item.name" :label="item.name"></el-option> </el-select> </el-form-item> <el-form-item label="工艺名称:" prop="name" width="250"> <el-select placeholder="请输入或选择工艺名称" style="width:200px;" v-model="technologyForm.name"> <el-option value="1">1</el-option> <el-option value="2">2</el-option> <el-option value="3">3</el-option> <el-option value="4">4</el-option> <el-form-item label="工艺名称:" prop="protechnologyId"> <el-select placeholder="请选择工艺名称" style="width:200px;" @change="getProductDeviceList" v-model="productForm.protechnologyId"> <el-option v-for="(item,index) in proIdList" :key="index" :value="item.id" :label="item.name"></el-option> </el-select> </el-form-item> <el-form-item label="设备:" prop="dg" width="250"> <el-form-item label="设备:" prop="device"> <el-select placeholder="请选择设备" style="width:200px;" v-model="technologyForm.dg"> <el-option value="1">1</el-option> <el-option value="2">2</el-option> <el-option value="3">3</el-option> <el-option value="4">4</el-option> v-model="productForm.device"> <el-option v-for="(item,index) in productDeviceList" :key="index" :value="item.device" :label="item.device"></el-option> </el-select> </el-form-item> <el-form-item label="项目:" prop="dg" width="250"> <el-form-item label="项目:" prop="productFather"> <el-select placeholder="请选择项目" style="width:200px;" v-model="technologyForm.dg"> <el-option value="1">1</el-option> <el-option value="2">2</el-option> <el-option value="3">3</el-option> <el-option value="4">4</el-option> style="width:200px;" @change="changeProductFather" v-model="productForm.productFather"> <el-option v-for="(item,index) in productProjectList" :key="index" :value="item.name" :label="item.name"></el-option> </el-select> </el-form-item> <el-form-item label="单位:" prop="unit" width="250"> <el-input style="width:200px;" v-model="technologyForm.unit" placeholder="请输入单位"/> <el-form-item label="指标:" prop="product"> <el-select placeholder="请选择指标" style="width:200px;" @change="changeProProduct" v-model="productForm.product"> <el-option v-for="(item,index) in proProductList" :key="index" :value="item.name" :label="item.name"></el-option> </el-select> </el-form-item> <el-form-item label="指标:" prop="pq" width="250"> <el-input style="width:200px;" v-model="technologyForm.pq" placeholder="请输入指标" /> <el-form-item label="单位:" prop="unit"> <el-input style="width:200px;" disabled v-model="productForm.unit"/> </el-form-item> </el-form> </div> <div style="width:100%;text-align: right;"> <span slot="footer" class="dialog-footer"> <el-button type="primary" @click="confirmAdd('productForm')">确 定</el-button> <el-button @click="bomAddModelVisible = false">取 消</el-button> <el-button type="primary" @click="confirmAdd('boomForm')">确 定</el-button> </span> </div> </div> </el-dialog> <!-- 左侧点击+按钮 --> <el-dialog title="BOM新增" :visible.sync="bomLeftAdd" width="29%"> @@ -245,16 +315,6 @@ <el-button type="primary" @click="submitForm('leftAdd')">确 定</el-button> </span> </el-dialog> <!-- 右上侧点击修改按钮 --> <el-dialog title="BOM修改" :visible.sync="bomRightUp" width="30%"> <el-form> 修改 </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="bomRightUp = false">取 消</el-button> <el-button type="primary" @click="bomRightUp = false">确 定</el-button> </span> </el-dialog> <!-- 右上侧点击删除按钮 --> <el-dialog title="BOM删除" :visible.sync="bomRightDl" width="30%"> <el-form> @@ -272,40 +332,100 @@ <script> import technology from "./standard-table/technology.vue" import material from "./standard-table/material.vue" import target from "./standard-table/target.vue" import product from "./standard-table/product.vue" // import bom from "./standard-table/bom.vue" import bomClickAdd from '@/components/view/standard-box/bomClickAdd' export default { components: { technology,material,target,product,bomClickAdd }, components: { technology,material,bomClickAdd }, data() { var checkPq = (rule,value,callback)=>{ if(value!='' && !Number.isInteger(value)){ return callback(new Error('请输入数字值')); } callback(); }; var checkVal = (rule,value,callback)=>{ let arr = [">","<","="]; if(value!='' && arr.indexOf(value.substring(0,1))==-1){ callback(new Error("开头需包含 > 或 < 或 = ")) } callback(); }; return { //工序列表 technologyIdList:[], fatherList:[], //设备组列表 deviceList:[], technologyForm:{ father:'', name:'', tefather:'', tename:'', deviceGroup:'', productionQuota:'' }, technologyRules:{ tefather:{required:true,message:'工序不能为空',trigger:'change'}, tename:{required:true,message:'工艺名称不能为空',trigger:'blur'}, deviceGroup:{required:true,message:'设备组不能为空',trigger:'change'}, productionQuota:{validator:checkPq,trigger:'change'} }, //技术指标 targetFormList:[], projectList:[], targetForm:{ pname:'', pfather:'', father: '', technologyId:'', name:'', unit:'', internal:'', required: '' }, formTypeOptions:[], materialForm:{}, boomRules:{ father:{required:true,message:'工序不能为空',trigger:'change'}, name:{required:true,message:'工艺名称不能为空',trigger:'blur'}, deviceGroup:{required:true,message:'设备组不能为空',trigger:'change'}, productionQuota:[ {required:true,message:'生产定额不能为空',trigger:'blur'}, {type:'number',required:true,message:'数据类型必须是纯数字',trigger:'blur'} ] targetRules:{ pfather:{required:true,message:'工序不能为空',trigger:'change'}, technologyId:{required:true,message:'工艺名称不能为空',trigger:'change'}, father:{required:true,message:'项目不能为空',trigger:'change'}, name:{required:true,message:'指标名称不能为空',trigger:'blur'}, unit:{required:true,message:'单位不能为空',trigger:'change'}, internal:{validator:checkVal,trigger:'change'}, required:{validator:checkVal,trigger:'change'} }, //物料清单 materialForm:{ mfather: '', mtechnologyId:'', tableList:[] }, materialFormList:[], mIdList:[], materialRules:{ mfather:{required:true,message:'工序不能为空',trigger:'change'}, mtechnologyId:{required:true,message:'工艺名称不能为空',trigger:'change'}, }, //生产工艺 productForm:{ profather:'', protechnologyId:'', productFather:'', product:'', unit:'', device:'' }, //设备列表 productDeviceList:[], //工艺名称列表 proIdList:[], //项目列表 productProjectList:[], //指标列表 proProductList:[], productRules:{ profather:{required:true,message:'工序不能为空',trigger:'change'}, protechnologyId:{required:true,message:'工艺名称不能为空',trigger:'change'}, productFather:{required:true,message:'项目不能为空',trigger:'change'}, product:{required:true,message:'指标不能为空',trigger:'change'}, device:{required:true,message:'设备不能为空',trigger:'change'} }, productFormList:[], // BOM树数据结构 list: [], search: null, @@ -330,7 +450,7 @@ name: null, specifications: null }, VER: {}, version2: {}, verdata: {}, character: 0, restaurants: [], @@ -339,19 +459,10 @@ isLeftAdd: true } }, // watch: { // search(val) { // this.$refs.tree.filter(val); // }, // tableType(val){ // this.selectProductTableData() // } // }, mounted() { this.tableType=0 this.selectMaterialTree() this.selectVersion() console.log(this.formTypeOptions); }, methods: { changeLeftAdd(){ @@ -463,31 +574,176 @@ leftAddBom(){ }, //右侧bom,确认新增 confirmAdd(formName){ this.$refs[formName].validate(valid=>{ if(valid){ console.log(this.technologyForm); this.$axios.post(this.$api.url.addTechnology, { "specificationsId": this.returntree.id, "technologyDto": JSON.stringify({ let type = this.typeselect; let obj = {} if(type == 0){ obj = { specificationsId: Number.parseInt(this.returntree.id), deviceGroup: this.technologyForm.deviceGroup, father: this.technologyForm.father, name: this.technologyForm.name, productionQuota: this.technologyForm.productionQuota, father: this.technologyForm.tefather, name: this.technologyForm.tename, productionQuota: Number.parseInt(this.technologyForm.productionQuota), } this.submitBomAdd(this.$api.url.addTechnology,obj); }else if(type == 1){ this.submitBomAdd(this.$api.url.addProductByStandard,this.targetForm); }else if(type == 2){ obj = { mbomDto2List:this.materialForm.tableList, technologyId:this.materialForm.mtechnologyId } this.submitBomAdd(this.$api.url.addMBomByStandard,obj); }else if(type == 3){ let form = this.productForm; obj = { device: form.device, product: form.product, productFather: form.productFather, technologyId: form.protechnologyId, unit: form.unit } this.submitBomAdd(this.$api.url.addTechniqueByStandard,obj); }else{ return } } }) },{ headers: { "Content-Type": "application/json" } }).then(res=>{ }, submitBomAdd(url,data){ this.$axios.post( url,data, {headers: { "Content-Type": "application/json" }} ).then(res=>{ this.selectAll(); this.$message.success(res.message); }).catch(error=>{ this.$message.error(error.message); }) this.bomAddModelVisible = false; }, clearBomAddModel(){ if(this.typeselect == 0){ this.$refs["technologyForm"].resetFields(); }else if(this.typeselect == 1){ this.$refs["targetForm"].resetFields(); }else if(this.typeselect == 2){ this.$refs["materialForm"].resetFields(); }else{ this.$refs["productForm"].resetFields(); } }, changeTechnologyId(val){ this.$axios.get(this.$api.url.chooseFatherByStandard,{ params:{technologyId : val} }).then(res=>{ this.projectList = res.data; }).catch(error=>{ this.$message.error(error.message); }); }, changeFather(val){ let arr = this.targetFormList.filter(item=>{ return item.name == val; }); if(arr != undefined || arr.children != null){ this.technologyIdList = arr[0].children; } }, //物料清单--添加行 addRowByMaterial(){ let obj = { "name": "", "num": null, "qualityTraceability": "", "specifications": "", "supplier": "", "unit": "" } this.materialForm.tableList.push(obj); }, //物料清单--获取工序,工艺列表 getMaterialFormList(){ this.$axios.get(this.$api.url.chooseTechByMBom,{ params:{specificationsId : this.returntree.id} }).then(res=>{ this.materialFormList = res.data; }).catch(error=>{ this.$message.error(error.message); }) }, //获取工序列表 changeMName(val){ let arr = this.materialFormList.filter(item=>{ return item.name == val; }) this.mIdList = arr[0].children; }, //技术指标--获取工序,工艺列表 getTargetFormList(){ this.$axios.get(this.$api.url.chooseTechByStandard,{ params:{specificationsId : this.returntree.id} }).then(res=>{ this.targetFormList = res.data; }).catch(error=>{ this.$message.error(error.message); }) }, //1.生产工艺-->选择工序,工艺 getProductFormList(){ this.$axios.get(this.$api.url.chooseTechByProduct,{ params:{specificationsId : this.returntree.id} }).then(res=>{ this.productFormList = res.data; }).catch(error=>{ this.$message.error(error.message); }) }, //2.选择工序,获取工艺名称 changeProduct(val){ let arr = this.productFormList.filter(item=>{ return item.name == val }); this.proIdList = arr[0].children; }, //3.生产工艺-->选择设备 getProductDeviceList(val){ this.$axios.get(this.$api.url.chooseDevByProduct,{ params:{technologyId : val} }).then(res=>{ this.productDeviceList = res.data; this.getProjectFormList(val); }).catch(error=>{ this.$message.error(error.message); }) }, //4.生产工艺--获取项目列表 getProjectFormList(val){ this.$axios.get(this.$api.url.chooseProByProduct,{ params:{technologyId : val} }).then(res=>{ this.productProjectList = res.data; }).catch(error=>{ this.$message.error(error.message); }) }, //5.选择项目列表,获取指标 changeProductFather(val){ let arr = this.productProjectList.filter(item=>{ return item.name == val; }) this.proProductList = arr[0].children; }, //选择指标列表 changeProProduct(val){ let arr = this.proProductList.filter(item=>{ return item.name == val; }) this.productForm.unit = arr[0].unit; }, //工艺路线--获取工序列表 getFatherList(){ this.$axios.get(this.$api.url.chooseFather,{ params:{specificationsId : this.returntree.id} @@ -497,7 +753,7 @@ this.$message.error(error.message); }) }, //获取设备组列表 //工艺路线--获取设备组列表 getDeviceList(){ this.$axios.get(this.$api.url.chooseDevice).then(res=>{ this.deviceList = res.data; @@ -508,6 +764,9 @@ showBomAddModel(){ this.getFatherList(); this.getDeviceList(); this.getTargetFormList(); this.getMaterialFormList(); this.getProductFormList(); this.bomAddModelVisible = true }, startLeftAdd(){ @@ -577,6 +836,7 @@ TYPE(val) {//类型.数据 // console.log(val); this.typeselect = val // console.log(this.typeselect); this.selectVersion() }, @@ -603,7 +863,7 @@ return this.verdata[0] }) this.character=v this.VER="v"+v this.version2="v"+v this.selectAll() }, //右侧数据 @@ -786,6 +1046,11 @@ this.restaurants=this.loadFatherType() } } }, bomAddModelVisible(newVal){ if(!newVal){ this.clearBomAddModel(); } } } } @@ -793,7 +1058,15 @@ <style scoped> .standard {} .standard .bom-add-model{ width: 100%; } .standard .bom-add-model form{ width: 90%; margin-left: 5%; } .standard .title .el-button { height: 32px; src/components/view/technology.vue
@@ -46,6 +46,7 @@ height: calc(100% - 20px); border-right: 3px solid rgb(245, 247, 251); padding: 16px; overflow-y: auto; } .thing .left .custom-tree-node span { @@ -174,7 +175,6 @@ node-key="name" default-expand-all @node-click="handleNodeClick" style="height: 500px;overflow-y: auto;" :key="upIndex" highlight-current > src/main.js
@@ -12,7 +12,6 @@ import swal from 'sweetalert' Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80/"; //前端本地端口 Vue.prototype.HaveJson = (val) => { return JSON.parse(JSON.stringify(val)) } @@ -27,7 +26,7 @@ const javaApi = 'http://192.168.0.23:8001' // localhost 127.0.0.1 // const javaApi = 'http://127.0.0.1:8001/' // const javaApi = 'http://127.0.0.1' src/view/index.vue
@@ -141,15 +141,28 @@ font-size: 14px; } .tag .el-icon-delete { display: none; } .tag .el-icon-delete:hover { color: #F56C6C; } .tag:hover .el-icon-delete { display: block; } .tag > .el-icon-s-unfold, .el-icon-s-fold { .el-icon-s-fold, .el-icon-delete { font-size: 18px; cursor: pointer; margin: 0 8px; } .tabs { min-width: calc(100% - 34px); min-width: calc(100% - 68px); height: 100%; align-items: center; display: flex; @@ -211,82 +224,43 @@ </div> </div> <div class="left" :style="`width: ${leftOpen ? '92' : '0'}px;`"> <div :class="`box ${activeBox == 0 ? 'active_box' : ''}`" @click="addTab(menu[0].c[0])" > <div :class="`box ${activeBox == 0 ? 'active_box' : ''}`" @click="addTab(menu[0].c[0])"> <i class="font icon-shouye"></i> <div>首页</div> </div> <div :class="`box ${activeBox == 3 ? 'active_box' : ''}`" @click="addTab(menu[1].c[0])" > <div :class="`box ${activeBox == 3 ? 'active_box' : ''}`" @click="addTab(menu[1].c[0])"> <i class="font icon-jine"></i> <div>销售管理</div> </div> <el-popover placement="right-start" width="90" trigger="click" v-for="(a, ai) in menu" :key="ai" v-if="a.k != '0' && a.k != '3'" > <div :class="`box ${activeBox == a.k ? 'active_box' : ''}`" @click="activeBox = a.k" slot="reference" > <el-popover placement="right-start" width="90" trigger="click" v-for="(a, ai) in menu" :key="ai" v-if="a.k != '0' && a.k != '3'"> <div :class="`box ${activeBox == a.k ? 'active_box' : ''}`" @click="activeBox = a.k" slot="reference"> <i :class="a.i"></i> <div>{{ a.v }}</div> </div> <div class="small_menu"> <p v-for="(b, bi) in a.c" :key="bi" :class="activeP == b.k ? 'active_p' : ''" @click="addTab(b)" > <p v-for="(b, bi) in a.c" :key="bi" :class="activeP == b.k ? 'active_p' : ''" @click="addTab(b)"> <i :class="b.i"></i> <span>{{ b.v }}</span> </p> </div> </el-popover> </div> <div class="right" :style="`width: calc(100% - ${leftOpen ? '92' : '0'}px);`" > <div class="right" :style="`width: calc(100% - ${leftOpen ? '92' : '0'}px);`"> <div class="tag"> <i :class="`${leftOpen ? 'el-icon-s-unfold' : 'el-icon-s-fold'}`" @click="leftOpen = !leftOpen" ></i> <i :class="`${leftOpen ? 'el-icon-s-unfold' : 'el-icon-s-fold'}`" @click="leftOpen = !leftOpen"></i> <div class="tabs"> <div :class="`tab ${tabActive == a.k ? 'active_tab' : ''}`" v-for="(a, ai) in tabs" :key="ai" @click="upTabActive(a.k)" > <div :class="`tab ${tabActive == a.k ? 'active_tab' : ''}`" v-for="(a, ai) in tabs" :key="ai" @click="upTabActive(a.k)"> {{ a.v }} <i class="el-icon-close" @click="removeTab(ai)" v-if="tabActive != 0" ></i> <i class="el-icon-close" @click="removeTab(ai)" v-if="tabActive != 0"></i> </div> </div> <i class="el-icon-delete" @click="allDel" title="删除所有标签页"></i> </div> <div class="component_view"> <component class="com_index" v-for="(com, index) in tabs" :is="com.u" :key="upIndex + '|' + index" v-show="com.k == tabActive" > <component class="com_index" v-for="(com, index) in tabs" :is="com.u" :key="upIndex + '|' + index" v-show="com.k == tabActive"> </component> </div> </div> @@ -310,39 +284,33 @@ return { userName: "value", leftOpen: true, menu: [ { menu: [{ k: 0, v: "首页", i: "font icon-shouye", c: [ { c: [{ k: 0, v: "首页", i: "font icon-shouye", u: "index-index" } ] }] }, { k: 3, v: "销售管理", i: "font icon-jine", c: [ { c: [{ k: 11, v: "销售管理", i: "font icon-jine", u: "sale" } ] }] }, { k: 1, v: "技术管理", i: "font icon-ic_form_set24px", c: [ { c: [{ k: 1, v: "标准BOM", i: "font icon-shouye", @@ -360,8 +328,7 @@ k: 4, v: "生产管理", i: "font icon-shengchanguanli", c: [ { c: [{ k: 12, v: "生产订单", i: "font icon-shouye", @@ -385,8 +352,7 @@ k: 5, v: "WMS管理", i: "font icon-a-Inventorydumprequest", c: [ { c: [{ k: 15, v: "原材料库存", i: "font icon-shouye", @@ -428,8 +394,7 @@ k: 2, v: "QMS管理", i: "font icon-xunhuan", c: [ { c: [{ k: 3, v: "原材料检验", i: "font icon-shouye", @@ -483,8 +448,7 @@ k: 6, v: "核算管理", i: "font icon-caiwuhesuanxitong", c: [ { c: [{ k: 21, v: "产量工资", i: "font icon-shouye", @@ -502,8 +466,7 @@ k: 7, v: "基础数据", i: "font icon-a-ziyuan20", c: [ { c: [{ k: 23, v: "生产记录维护", i: "font icon-shouye", @@ -539,12 +502,6 @@ i: "font icon-shouye", u: "mbom" }, // { // k: 29, // v: "巡检项目维护", // i: "font icon-shouye", // u: "routinginspection" // }, { k: 30, v: "生产工艺维护", @@ -557,14 +514,12 @@ activeBox: 0, activeP: 0, tabActive: 0, tabs: [ { tabs: [{ k: 0, v: "首页", i: "font icon-shouye", u: "index-index" } ], }], upIndex: 0 }; }, @@ -590,33 +545,31 @@ } }, removeTab(index) { if (this.tabs.length > 1) { this.tabs.splice(index, 1); this.activeP = this.tabs[this.tabs.length - 1].k; this.tabActive = this.tabs[this.tabs.length - 1].k; } else { this.$message.warning("不能关闭最后的标签"); } }, allDel() { this.activeBox = 0 this.activeP = 0 this.tabActive = 0 this.tabs = [{ k: 0, v: " 首页", i: "font icon-shouye", u: "index-index" }] }, upTabActive(num) { this.tabActive = num; this.activeP = num; if (num == 0) { this.activeBox = 0; } else if (num > 0 && num <= 2) { this.activeBox = 1; } else if (num > 2 && num < 11) { this.activeBox = 2; } else if (num == 11) { this.activeBox = 3; } else if (num > 11 && num <= 14) { this.activeBox = 4; } else if (num > 14 && num <= 20) { this.activeBox = 5; } else if (num > 20 && num <= 22) { this.activeBox = 6; } else if (num > 22 && num <= 30) { this.activeBox = 7; for (var i = 0; i < this.menu.length; i++) { this.menu[i].c.forEach(b => { if (b.k == num) { this.activeBox = this.menu[i].k; return } }) } }, out() {