| src/api/DeviceManager.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/api/WorkOrder.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/deviceManager/deviceList.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/sopManager/sopDevice.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/sopManager/sopRoute.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/sopManager/sopWorkOrder.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/systemSetting/processSetting.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/workOrder/workOrderList.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/DeviceManager.js
@@ -26,6 +26,7 @@ params: data }) } // 设备列表查询 export function DeviceMangerSearch(data) { return request({ @@ -34,6 +35,16 @@ params: data }) } // 设备信息查看SOP export function DeviceSopSearch(data) { return request({ url: 'DeviceManager/DeviceSopSearch', method: 'get', params: data }) } // 设备清单新增编辑 export function AddUpdateDeviceManger(data) { return request({ @@ -42,6 +53,7 @@ data }) } // 设备信息删除 export function DeleteDeviceManger(data) { return request({ @@ -68,6 +80,7 @@ data }) } // 设备点检项删除 export function DeleteDeviceCheckItem(data) { return request({ @@ -76,6 +89,7 @@ params: data }) } // 设备保养项列表查询 export function DeviceMaiItemSearch(data) { return request({ @@ -84,6 +98,7 @@ params: data }) } // 设备保养项新增编辑 export function AddUpdateDeviceMaiItem(data) { return request({ @@ -92,6 +107,7 @@ data }) } // 设备保养项删除 export function DeleteDeviceMaiItem(data) { return request({ @@ -100,6 +116,7 @@ params: data }) } // 设备点检标准列表查询 export function DeviceCheckStandArdSearch(data) { return request({ @@ -108,6 +125,7 @@ params: data }) } // 设备点检标准新增、编辑获取检验项目下拉列表 export function DeviceCheckItemSelect() { return request({ @@ -115,6 +133,7 @@ method: 'get' }) } // 设备点检标准编辑/查看获取数据 export function ViewDeviceCheckStanedSearch(data) { return request({ @@ -123,6 +142,7 @@ params: data }) } // 设备点检标准新增编辑 export function AddUpdateDeviceCheckStandArd(data, opertype) { return request({ @@ -131,6 +151,7 @@ data }) } // 设备点检标准删除 export function DeleteDeviceCheckStaned(data) { return request({ @@ -139,6 +160,7 @@ params: data }) } // 设备点检标准关联工作站查询 export function DeviceCheckStanedAssociationEqp(data) { return request({ @@ -147,6 +169,7 @@ params: data }) } // 设备点检标准关联工作站提交 export function SaveDeviceCheckStanedAssociationEqp(data, checkstand_code) { return request({ @@ -155,6 +178,7 @@ data }) } // 设备保养标准列表查询 export function DeviceRepairStandArdSearch(data) { return request({ @@ -163,6 +187,7 @@ params: data }) } // 设备保养标准新增、编辑获取保养项目下拉列表 export function DeviceRepairItemSelect() { return request({ @@ -170,6 +195,7 @@ method: 'get' }) } // 设备保养标准编辑/查看获取数据 export function ViewDeviceRepairStanedSearch(data) { return request({ @@ -178,6 +204,7 @@ params: data }) } // 设备保养标准新增编辑 export function AddUpdateDeviceRepairStandArd(data, opertype) { return request({ @@ -186,6 +213,7 @@ data }) } // 设备保养标准删除 export function DeleteDeviceRepairStaned(data) { return request({ @@ -194,6 +222,7 @@ params: data }) } // 设备保养标准关联工作站查询 export function DeviceRepairStanedAssociationEqp(data) { return request({ @@ -202,6 +231,7 @@ params: data }) } // 设备保养标准关联工作站提交 export function SaveDeviceRepairStanedAssociationEqp(data, repairstand_code) { return request({ @@ -264,6 +294,7 @@ params: data }) } // 设备维修记录查询 export function DeviceUpdateSearch(data) { return request({ @@ -272,6 +303,7 @@ params: data }) } // 设备维修记录明细查询 export function DeviceUpdateSubSearch(data) { return request({ @@ -280,6 +312,7 @@ params: data }) } // 设备维修记录下载 export function DeviceUpdateOutExcel(data) { return request({ src/api/WorkOrder.js
@@ -97,6 +97,24 @@ }) } // MES工单查看工单SOP export function MesOrderSopSearch(data) { return request({ url: 'WorkOrder/MesOrderSopSearch', method: 'get', params: data }) } // MES工单查看工艺SOP export function MesOrderProcessSopSearch(data) { return request({ url: 'WorkOrder/MesOrderProcessSopSearch', method: 'get', params: data }) } // 工单派发 export function MesOrderDistribution(data) { return request({ src/views/deviceManager/deviceList.vue
@@ -63,7 +63,13 @@ > <div class="bodyTopButtonGroup" style="justify-content: space-between"> <el-button v-waves type="primary" icon="el-icon-circle-plus-outline" @click="add('add')">新增</el-button> <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=9')">导入</el-button> <el-button v-waves type="success" icon="el-icon-download" @click="$router.push('./../systemSetting/dataImport?fileCode=9')" >导入 </el-button> </div> <div class="bodyTopFormGroup"> @@ -128,7 +134,13 @@ class="bodySearchReset" :style="{marginLeft:$store.state.app.sidebar.opened? $store.state.settings.menuIsHorizontal?'15%':'3%':'10%'}" > <el-button v-waves type="primary" icon="el-icon-search" @click="getDeviceMangerSearch($refs.treeLeftRef.getCurrentNode())">查询</el-button> <el-button v-waves type="primary" icon="el-icon-search" @click="getDeviceMangerSearch($refs.treeLeftRef.getCurrentNode())" >查询 </el-button> <el-button v-waves type="info" icon="el-icon-refresh" @click="reset">重置</el-button> </div> </el-form> @@ -225,6 +237,15 @@ > <template slot-scope="{row}"> <div class="operationClass"> <el-tooltip v-del-tab-index class="item" effect="dark" content="SOP预览" placement="top"> <i v-if="mesSetting.device" class="el-icon-files" style="cursor: pointer;color:#42b983;margin-right: 15px" @click="pre(row)" /> </el-tooltip> <el-tooltip class="item" effect="dark" content="编辑" placement="top"> <i class="el-icon-edit-outline" @@ -361,6 +382,63 @@ </span> </el-dialog> <!-- sop预览--> <el-dialog v-el-drag-dialog title="设备SOP预览" :visible.sync="SopDialogVisible" width="800px" :close-on-click-modal="false" top="15vh" @closed="handleSopClose" @close="handleSopClose" > <el-form ref="dialogClassForm" inline :rules="dialogClassFormRules" :model="dialogClassForm" label-width="110px"> <el-form-item label="设备SOP"> <el-select v-model="dialogSopForm.sop" style="width:200px" placeholder="请选择" filterable :popper-append-to-body="false" @change="sopChange" > <el-option v-for="item in sopArr" :key="item.filepath" :label="item.filename" :value="item.filepath" /> </el-select> </el-form-item> <el-form-item label="Sop版本"> <el-input v-model="dialogSopForm.v" disabled style="width: 200px" /> </el-form-item> </el-form> <el-button v-waves type="primary" style="margin-left: 37px" @click="view" >预 览/下 载</el-button> <span slot="footer" class="dialog-footer"> <div class="footerButton"> <el-button v-waves @click="handleSopClose">取 消</el-button> <!-- <el-button--> <!-- v-waves--> <!-- type="primary"--> <!-- :loading="$store.state.app.buttonIsDisabled"--> <!-- :disabled="$store.state.app.buttonIsDisabled"--> <!-- @click="handleSopConfirm"--> <!-- >确 定</el-button>--> </div> </span> </el-dialog> </div> </template> @@ -375,7 +453,7 @@ AddUpdateDeviceManger, AddUpdateDeviceType, DeleteDeviceManger, DeleteDeviceType, DeviceMangerSearch, DeviceMangerSearch, DeviceSopSearch, DeviceTypeSearch } from '@/api/DeviceManager' @@ -387,6 +465,7 @@ }, data() { return { mesSetting: JSON.parse(localStorage.getItem('mesSetting')), mouseHoverType: 'mouseout', isExpandForm: false, mainHeight: 0, @@ -469,8 +548,14 @@ storgcode: [ { required: true, message: '请选择所属组织', trigger: ['blur', 'change'] } ] }, } SopDialogVisible: false, dialogSopForm: { // 设备SOP表单 sop: '', v: '' }, sopArr: [] } }, @@ -486,6 +571,32 @@ this.getPrentOrganization() }, methods: { // 弹出框关闭 handleSopClose() { this.SopDialogVisible = false this.dialogSopForm = { // 设备SOP表单 sop: '', v: '' } }, // 预览 view() { window.open(process.env.VUE_APP_BASE_API_FILE + this.dialogSopForm.sop) }, // sop预览 async pre(row) { const data = { eqptypecode: row.eqptype_code, eqpcode: row.code } const { data: res } = await DeviceSopSearch(data) this.sopArr = res this.SopDialogVisible = true }, sopChange(val) { this.dialogSopForm.v = this.sopArr.find(i => i.filepath === val).version }, async getDeviceTypeSearch() { const res = await DeviceTypeSearch() res.data.forEach(i => { src/views/sopManager/sopDevice.vue
@@ -228,8 +228,8 @@ :on-exceed="handleExceed" :auto-upload="false" :multiple="false" accept=".mp4,.pdf,.png,.jpeg,.svg,.txt,.xlsx,.xls" > <!-- accept=".mp4,.pdf"--> <el-button v-waves type="primary" @@ -368,6 +368,7 @@ handleExceed() { this.$message.info('暂不支持多文件上传!') }, async devicetypecodeChange(eqptypecode) { const { data: res } = await EqpTypecodeSeachEqpPermissions({ eqptypecode }) this.deviceArr = res @@ -432,8 +433,14 @@ // 对话框确认 dialogVisibleConfirm() { console.log(this.$refs.uploadFileRef.uploadFiles[0]) if (!this.$refs.uploadFileRef.uploadFiles[0]) { this.$message.info('请选择文件上传!') return this.$message.info('请选择文件上传!') } const isLt100M = this.$refs.uploadFileRef.uploadFiles[0].size / 1024 / 1024 <= 1024 if (!isLt100M) { return this.$message.info('请检查,上传文件大小不能超过1024MB!') } this.$refs.dialogForm.validate(valid => { src/views/sopManager/sopRoute.vue
@@ -203,7 +203,7 @@ <el-option v-for="item in partcodeArr" :key="item.partcode" :label="item.partname" :label="item.partname+' / '+item.partcode" :value="item.partcode" /> </el-select> @@ -279,6 +279,7 @@ :on-exceed="handleExceed" :auto-upload="false" :multiple="false" accept=".mp4,.pdf,.png,.jpeg,.svg,.txt,.xlsx,.xls" > <!-- accept=".mp4,.pdf"--> <el-button @@ -525,6 +526,11 @@ this.$message.info('请选择文件上传!') } const isLt100M = this.$refs.uploadFileRef.uploadFiles[0].size / 1024 / 1024 <= 1024 if (!isLt100M) { return this.$message.info('请检查,上传文件大小不能超过1024MB!') } this.$refs.dialogForm.validate(valid => { if (valid) { const formData = new FormData() src/views/sopManager/sopWorkOrder.vue
@@ -236,6 +236,7 @@ :on-exceed="handleExceed" :auto-upload="false" :multiple="false" accept=".mp4,.pdf,.png,.jpeg,.svg,.txt,.xlsx,.xls" > <!-- accept=".mp4,.pdf"--> <el-button @@ -463,6 +464,11 @@ this.$message.info('请选择文件上传!') } const isLt100M = this.$refs.uploadFileRef.uploadFiles[0].size / 1024 / 1024 <= 1024 if (!isLt100M) { return this.$message.info('请检查,上传文件大小不能超过1024MB!') } this.$refs.dialogForm.validate(valid => { if (valid) { const formData = new FormData() src/views/systemSetting/processSetting.vue
@@ -138,6 +138,7 @@ this.route = mesSetting.route this.isOrder = mesSetting.isOrder this.device = mesSetting.device this.tech = mesSetting.tech this.workOrder = mesSetting.workOrder this.every = mesSetting.every src/views/workOrder/workOrderList.vue
@@ -351,6 +351,16 @@ > <template slot-scope="{row}"> <div class="operationClass"> <el-tooltip v-del-tab-index class="item" effect="dark" content="SOP预览" placement="top"> <i v-if="mesSetting.workOrder" class="el-icon-files" style="cursor: pointer;color:#42b983;margin-right: 15px" @click="pre(row,1)" /> </el-tooltip> <el-tooltip class="item" effect="dark" content="修改" placement="top"> <i class="el-icon-edit-outline" @@ -491,34 +501,42 @@ show-tooltip-when-overflow prop="delive_qty" /> <!-- <el-table-column--> <!-- label="操作"--> <!-- width="120"--> <!-- fixed="right"--> <!-- >--> <!-- <template slot-scope="{row}">--> <!-- <div class="operationClass">--> <!-- <el-tooltip class="item" effect="dark" content="打印工序" placement="top">--> <!-- <i--> <!-- v-if="tableDataDetail.length!==row.seq"--> <!-- class="el-icon-printer"--> <!-- :style="{color:$store.state.settings.theme}"--> <!-- style="cursor: pointer;margin-right: 15px"--> <!-- @click="supplementSmallClick(row)"--> <!-- />--> <!-- </el-tooltip>--> <!-- <el-tooltip class="item" effect="dark" content="补打生产入库条码" placement="top">--> <!-- <i--> <!-- v-if="tableDataDetail.length===row.seq"--> <!-- class=" el-icon-camera"--> <!-- :style="{color:$store.state.settings.theme}"--> <!-- style="cursor: pointer;margin-right: 15px"--> <!-- @click="getProductInHouseLabCode(row.wo_code)"--> <!-- />--> <!-- </el-tooltip>--> <!-- </div>--> <!-- </template>--> <!-- </el-table-column>--> <el-table-column label="操作" width="120" fixed="right" > <template slot-scope="{row}"> <div class="operationClass"> <el-tooltip v-del-tab-index class="item" effect="dark" content="SOP预览" placement="top"> <i v-if="mesSetting.tech" class="el-icon-files" style="cursor: pointer;color:#42b983;margin-right: 15px" @click="pre(row,2)" /> </el-tooltip> <!-- <el-tooltip class="item" effect="dark" content="打印工序" placement="top">--> <!-- <i--> <!-- v-if="tableDataDetail.length!==row.seq"--> <!-- class="el-icon-printer"--> <!-- :style="{color:$store.state.settings.theme}"--> <!-- style="cursor: pointer;margin-right: 15px"--> <!-- @click="supplementSmallClick(row)"--> <!-- />--> <!-- </el-tooltip>--> <!-- <el-tooltip class="item" effect="dark" content="补打生产入库条码" placement="top">--> <!-- <i--> <!-- v-if="tableDataDetail.length===row.seq"--> <!-- class=" el-icon-camera"--> <!-- :style="{color:$store.state.settings.theme}"--> <!-- style="cursor: pointer;margin-right: 15px"--> <!-- @click="getProductInHouseLabCode(row.wo_code)"--> <!-- />--> <!-- </el-tooltip>--> </div> </template> </el-table-column> </el-table> </div> </div> @@ -2024,6 +2042,64 @@ </span> </el-dialog> <!-- 工单sop/工序sop--> <el-dialog v-el-drag-dialog class="sop" title="设备SOP预览" :visible.sync="SopDialogVisible" width="800px" :close-on-click-modal="false" top="15vh" @closed="handleSopClose" @close="handleSopClose" > <el-form inline label-width="110px" style="display:flex"> <el-form-item label="工单SOP"> <el-select v-model="dialogSopForm.sop" style="width:200px" placeholder="请选择" filterable :popper-append-to-body="false" @change="sopChange" > <el-option v-for="item in sopArr" :key="item.filepath" :label="item.filename" :value="item.filepath" /> </el-select> </el-form-item> <el-form-item label="Sop版本"> <el-input v-model="dialogSopForm.v" disabled style="width: 200px" /> </el-form-item> </el-form> <el-button v-waves type="primary" style="margin-left: 37px" @click="view" >预 览/下 载</el-button> <span slot="footer" class="dialog-footer"> <div class="footerButton"> <el-button v-waves @click="handleSopClose">取 消</el-button> <!-- <el-button--> <!-- v-waves--> <!-- type="primary"--> <!-- :loading="$store.state.app.buttonIsDisabled"--> <!-- :disabled="$store.state.app.buttonIsDisabled"--> <!-- @click="handleSopConfirm"--> <!-- >确 定</el-button>--> </div> </span> </el-dialog> </div> </template> @@ -2038,8 +2114,8 @@ import { AddMesOrderCodeSearch, AddUpdateMesOrder, DeleteMesOrder, MesBadOrderSearch, MesOrderDistribution, MesOrderNewStepContent, MesOrderSearch, MesBadOrderSearch, MesOrderDistribution, MesOrderNewStepContent, MesOrderProcessSopSearch, MesOrderSearch, MesOrderSopSearch, UpdateMesOrderStepSearch } from '@/api/WorkOrder' import { PartSelect } from '@/api/ProductModel' @@ -2049,6 +2125,7 @@ import { MesOrderPrintSearch } from '@/api/GridReport' // base on element-ui import DateType from '@/components/DateType' import { PartSelectRpute, RouteSelectStep } from '@/api/basicSettings' import { DeviceSopSearch } from '@/api/DeviceManager' export default { name: 'WorkOrderList', components: { @@ -2316,8 +2393,16 @@ sourceType: false, // 工序的数据来源 mesSetting: JSON.parse(localStorage.getItem('mesSetting')) mesSetting: JSON.parse(localStorage.getItem('mesSetting')), SopDialogVisible: false, dialogSopForm: { // 设备SOP表单 sop: '', v: '' }, sopArr: [], routeCode: '', // 工艺路线code partCode: '' } }, watch: { @@ -2353,6 +2438,43 @@ // }) }, methods: { // 弹出框关闭 handleSopClose() { this.SopDialogVisible = false this.dialogSopForm = { // 设备SOP表单 sop: '', v: '' } }, // 预览 view() { window.open(process.env.VUE_APP_BASE_API_FILE + this.dialogSopForm.sop) }, sopChange(val) { this.dialogSopForm.v = this.sopArr.find(i => i.filepath === val).version }, async pre(row, type) { if (type === 1) { const data = { wocode: row.wo_code, materielcode: row.partcode } const { data: res } = await MesOrderSopSearch(data) this.sopArr = res } if (type === 2) { const data = { materielcode: this.partCode, routecode: this.routeCode ? this.routeCode : '', stepcode: row.step_code } const { data: res } = await MesOrderProcessSopSearch(data) this.sopArr = res } this.SopDialogVisible = true }, // 工序来源切换 sourceTypeChange(val) { this.stepTableData = [] @@ -3316,6 +3438,8 @@ }, // 行点击事件 async rowClick(row, event, column) { this.routeCode = row.route_code ? row.route_code : '' this.partCode = row.partcode ? row.partcode : '' const data = { sourceid: row.sourceid, sourcewo: row.m_po, @@ -3475,6 +3599,12 @@ padding: 20px 100px !important; } .sop { ::v-deep .el-dialog__body { padding: 50px 80px !important; } } .dialogVisibleSearch ::v-deep .el-dialog__body { padding: 20px 20px !important; }