Compare commits

...

3 Commits

4 changed files with 85 additions and 1074 deletions

View File

@@ -449,14 +449,10 @@
<script>
import { mapGetters } from 'vuex'
import axios from 'axios'
import { mqttIp, mqttTopic, mqttInitRequestTopic, writePlcApi_BtnType, selectOpNameApi, multiReadPlcApi, partUnloadedApi } from '@/../static/config'
import { mqttIp, mqttTopic, mqttInitRequestTopic, writePlcApi_BtnType, selectOpNameApi, multiReadPlcApi, partUnloadedApi, updateProgramVersionApi } from '@/../static/config'
// ==================== 常量定义 ====================
/** 程序版本 PLC 字符串信号标识 */
const PROGRAM_VERSION_TAG_ID = '208640'
/** 程序版本下拉选项 */
/** 程序版本可选项PLC 实际可写的字符值) */
const PROGRAM_VERSION_OPTIONS = []
@@ -491,7 +487,7 @@ const POLL_TOTAL_COUNT = 120
export default {
data() {
return {
opNameType: '底架上线',
opNameType: '底架上线', // 底架上线 转台上线
opName: '',
clickOpName: '',
opNameList: [],
@@ -620,6 +616,16 @@ export default {
}, { timeout: 5000 })
},
/** 写入程序版本到PLC使用 web_update_materialcodecode 接口) */
async writeProgramVersionToPLC(opName, version) {
const result = opName === this.opNameList[0] ? this.ws1Result : this.ws2Result
return axios.post(updateProgramVersionApi, {
OpCode: opName,
SortNo: result.扫码物料编码 || '',
V: version
}, { timeout: 5000 })
},
/** 根据工位名获取对应的状态对象和托盘对象 */
getWorkstationData(opName) {
const isWs1 = opName === this.opNameList[0]
@@ -981,7 +987,8 @@ export default {
}
},
/** 实际执行 PLC 写值上线流程;成功后写入手动上线记录 */
/** 实际执行 PLC 写值上线流程;成功后写入手动上线记录
* 注意:程序版本已在选择弹窗确认时写入 PLC此处不再重复写 */
async doPartLoad(opName) {
const result = opName === this.opNameList[0] ? this.ws1Result : this.ws2Result
const partLoadStatus = opName === this.opNameList[0] ? this.ws1PartLoadStatus : this.ws2PartLoadStatus
@@ -998,8 +1005,6 @@ export default {
}
try {
const r1 = await this.writePLCValue(opName, PROGRAM_VERSION_TAG_ID, programVersion)
if (r1.data.code != 0) throw new Error(r1.data.msg || '程序版本写入失败')
const r2 = await this.writePLCValue(opName, '205015', 'true')
if (r2.data.code == 0) {
partLoadStatus.success = true
@@ -1061,20 +1066,29 @@ export default {
this.versionDialog.visible = true
},
/** 首次扫码:从数据库取该物料最近一次的程序版本,直接回填,不弹窗 */
/** 首次扫码:从数据库取该物料最近一次的程序版本,直接回填 + 写PLC,不弹窗 */
async autoFillFirstVersion(opName) {
const result = opName === this.opNameList[0] ? this.ws1Result : this.ws2Result
const partCode = result.扫码物料编码 || ''
if (!partCode) return
const historyList = await this.loadHistoryVersions(partCode)
if (historyList && historyList.length > 0) {
result.程序版本 = historyList[0]
this.setLastUsedVersion(opName, historyList[0])
if (!historyList || historyList.length === 0) return
const version = historyList[0]
try {
const r = await this.writeProgramVersionToPLC(opName, version)
if (r.data.code != 0) {
this.$message.error('程序版本写入PLC失败' + (r.data.msg || ''))
return
}
result.程序版本 = version
this.setLastUsedVersion(opName, version)
} catch (error) {
this.$message.error('程序版本写入PLC失败' + error.message)
}
},
/** "选择程序版本"弹窗确定:把版本回填到对应工位,不自动上线 */
confirmVersionDialog() {
/** "选择程序版本"弹窗确定:把版本回填 + 立即写入 PLC,不自动上线 */
async confirmVersionDialog() {
const version = this.versionDialog.selectedVersion ? this.versionDialog.selectedVersion.toString() : ''
if (!version) {
this.$message.warning('请选择或输入程序版本!')
@@ -1082,9 +1096,19 @@ export default {
}
const opName = this.versionDialog.opName
const result = opName === this.opNameList[0] ? this.ws1Result : this.ws2Result
try {
const r = await this.writeProgramVersionToPLC(opName, version)
if (r.data.code != 0) {
this.$message.error('程序版本写入PLC失败' + (r.data.msg || ''))
return
}
result.程序版本 = version
this.setLastUsedVersion(opName, version)
this.versionDialog.visible = false
this.$message.success('程序版本已写入 PLC')
} catch (error) {
this.$message.error('程序版本写入PLC失败' + error.message)
}
},
/** 读取该工位上一次使用的程序版本localStorage */

View File

@@ -449,14 +449,10 @@
<script>
import { mapGetters } from 'vuex'
import axios from 'axios'
import { mqttIp, mqttTopic, mqttInitRequestTopic, writePlcApi_BtnType, selectOpNameApi, multiReadPlcApi, partUnloadedApi } from '@/../static/config'
import { mqttIp, mqttTopic, mqttInitRequestTopic, writePlcApi_BtnType, selectOpNameApi, multiReadPlcApi, partUnloadedApi, updateProgramVersionApi } from '@/../static/config'
// ==================== 常量定义 ====================
/** 程序版本 PLC 字符串信号标识 */
const PROGRAM_VERSION_TAG_ID = '208640'
/** 程序版本下拉选项 */
/** 程序版本可选项PLC 实际可写的字符值) */
const PROGRAM_VERSION_OPTIONS = []
@@ -491,7 +487,7 @@ const POLL_TOTAL_COUNT = 120
export default {
data() {
return {
opNameType: '转台上线',
opNameType: '转台上线', // 底架上线 转台上线
opName: '',
clickOpName: '',
opNameList: [],
@@ -620,6 +616,16 @@ export default {
}, { timeout: 5000 })
},
/** 写入程序版本到PLC使用 web_update_materialcodecode 接口) */
async writeProgramVersionToPLC(opName, version) {
const result = opName === this.opNameList[0] ? this.ws1Result : this.ws2Result
return axios.post(updateProgramVersionApi, {
OpCode: opName,
SortNo: result.扫码物料编码 || '',
V: version
}, { timeout: 5000 })
},
/** 根据工位名获取对应的状态对象和托盘对象 */
getWorkstationData(opName) {
const isWs1 = opName === this.opNameList[0]
@@ -981,7 +987,8 @@ export default {
}
},
/** 实际执行 PLC 写值上线流程;成功后写入手动上线记录 */
/** 实际执行 PLC 写值上线流程;成功后写入手动上线记录
* 注意:程序版本已在选择弹窗确认时写入 PLC此处不再重复写 */
async doPartLoad(opName) {
const result = opName === this.opNameList[0] ? this.ws1Result : this.ws2Result
const partLoadStatus = opName === this.opNameList[0] ? this.ws1PartLoadStatus : this.ws2PartLoadStatus
@@ -998,8 +1005,6 @@ export default {
}
try {
const r1 = await this.writePLCValue(opName, PROGRAM_VERSION_TAG_ID, programVersion)
if (r1.data.code != 0) throw new Error(r1.data.msg || '程序版本写入失败')
const r2 = await this.writePLCValue(opName, '205015', 'true')
if (r2.data.code == 0) {
partLoadStatus.success = true
@@ -1061,20 +1066,29 @@ export default {
this.versionDialog.visible = true
},
/** 首次扫码:从数据库取该物料最近一次的程序版本,直接回填,不弹窗 */
/** 首次扫码:从数据库取该物料最近一次的程序版本,直接回填 + 写PLC,不弹窗 */
async autoFillFirstVersion(opName) {
const result = opName === this.opNameList[0] ? this.ws1Result : this.ws2Result
const partCode = result.扫码物料编码 || ''
if (!partCode) return
const historyList = await this.loadHistoryVersions(partCode)
if (historyList && historyList.length > 0) {
result.程序版本 = historyList[0]
this.setLastUsedVersion(opName, historyList[0])
if (!historyList || historyList.length === 0) return
const version = historyList[0]
try {
const r = await this.writeProgramVersionToPLC(opName, version)
if (r.data.code != 0) {
this.$message.error('程序版本写入PLC失败' + (r.data.msg || ''))
return
}
result.程序版本 = version
this.setLastUsedVersion(opName, version)
} catch (error) {
this.$message.error('程序版本写入PLC失败' + error.message)
}
},
/** "选择程序版本"弹窗确定:把版本回填到对应工位,不自动上线 */
confirmVersionDialog() {
/** "选择程序版本"弹窗确定:把版本回填 + 立即写入 PLC,不自动上线 */
async confirmVersionDialog() {
const version = this.versionDialog.selectedVersion ? this.versionDialog.selectedVersion.toString() : ''
if (!version) {
this.$message.warning('请选择或输入程序版本!')
@@ -1082,9 +1096,19 @@ export default {
}
const opName = this.versionDialog.opName
const result = opName === this.opNameList[0] ? this.ws1Result : this.ws2Result
try {
const r = await this.writeProgramVersionToPLC(opName, version)
if (r.data.code != 0) {
this.$message.error('程序版本写入PLC失败' + (r.data.msg || ''))
return
}
result.程序版本 = version
this.setLastUsedVersion(opName, version)
this.versionDialog.visible = false
this.$message.success('程序版本已写入 PLC')
} catch (error) {
this.$message.error('程序版本写入PLC失败' + error.message)
}
},
/** 读取该工位上一次使用的程序版本localStorage */

View File

@@ -22,6 +22,7 @@ export const writePlcApi_BtnType = api + `/api/Web_WritePLC_BtnType`
export const multiReadPlcApi = api + `/api/Web_MultReadPLC`
export const selectOpNameApi = api + `/api/Web_SetScanPoint`
export const partUnloadedApi = api + `/api/Web_PartUnloaded`
export const updateProgramVersionApi = api + `/api/web_update_materialcodecode`
export const readFile_config = url + `/webpage/file/` // invoice
export const readImg_config = url + `/webpage/img/` // delivery/MS/performancebond