import SoftKey3W from "@/utils/Syunew3";
|
import { defineStore } from 'pinia';
|
|
export default defineStore({
|
id: 'ukey',
|
state() {
|
return {
|
connect: 0, // 判断是否安装了客户端服务,0未安装,1已安装
|
isIn: 0, // uKey的插拔状态
|
id: "", // uKey的唯一编号
|
}
|
},
|
getters: {
|
getId(state) {
|
if (state.isIn) {
|
return state.id;
|
} else {
|
return "";
|
}
|
}
|
},
|
actions: {
|
changeIsIn(isIn) {
|
this.isIn = isIn;
|
},
|
changeConnect(isConnect) {
|
this.connect = isConnect;
|
},
|
changeUKeyId(id) {
|
this.id = id;
|
},
|
/**
|
* 监控uKey的插拔事件
|
* @param context
|
* @returns {boolean}
|
*/
|
load(isLoad) {
|
//如果是IE10及以下浏览器,则跳过不处理,
|
if (navigator.userAgent.indexOf("MSIE") > 0 && !navigator.userAgent.indexOf("opera") > -1) {
|
//该例子只支持HTM5的浏览器
|
return;
|
}
|
try {
|
let s_pnp = new SoftKey3W();//创建UK类
|
// context.commit('changeConnect', 0); //客户端服务安装状态
|
this.changeConnect(0);
|
s_pnp.Socket_UK.onopen = () => {
|
// context.commit('changeConnect', 1);//代表已经连接,用于判断是否安装了客户端服务
|
this.changeConnect(1);
|
}
|
|
// uKey插拔事件监听
|
s_pnp.Socket_UK.onmessage = (Msg) => {
|
let PnpData = JSON.parse(Msg.data);
|
console.log('PnpData', PnpData)
|
if (PnpData.type == "PnpEvent")//如果是插拨事件处理消息
|
{
|
if (PnpData.IsIn) {
|
// context.commit('changeIsIn', 1); // 已插入uKey
|
this.changeIsIn(1);
|
} else {
|
// context.commit('changeIsIn', 0); // 未插入uKey
|
this.changeIsIn(0);
|
// context.commit('changeId', ""); // 初始化uKeyId为空
|
this.changeUKeyId("");
|
}
|
}
|
}
|
|
s_pnp.Socket_UK.onclose = () => {
|
console.log('关闭监控插拔监控');
|
}
|
} catch (error) {
|
console.log(error.name + ": " + error.message);
|
return false;
|
}
|
},
|
/**
|
* 检测是否插入uKey
|
* @param context
|
* @param isConnent 客户端服务安装状态
|
*/
|
checkIsIn(isConnent) {
|
if (isConnent) {
|
try {
|
let s_simnew1 = new SoftKey3W(); //创建UK类
|
let DevicePath, version;
|
s_simnew1.Socket_UK.onopen = () => {
|
s_simnew1.ResetOrder();//这里调用ResetOrder将计数清零,这样,消息处理处就会收到0序号的消息,通过计数及序号的方式,从而生产流程
|
}
|
|
s_simnew1.Socket_UK.onmessage = (Msg) => {
|
let UK_Data = JSON.parse(Msg.data);
|
if (UK_Data.type != "Process") return;//如果不是流程处理消息,则跳过
|
switch (UK_Data.order) {
|
case 0:
|
{
|
s_simnew1.FindPort(0); //发送命令取UK的路径
|
}
|
break;
|
case 1:
|
{
|
if (UK_Data.LastError != 0) {
|
// context.commit('changeIsIn', 0); // 未插入
|
this.changeIsIn(0);
|
// context.commit('changeId', ""); // 初始化uKeyId为空
|
this.changeUKeyId("");
|
s_simnew1.Socket_UK.close();
|
return false;
|
}
|
// context.commit('changeIsIn', 1); // 已插入
|
this.changeIsIn(1);
|
DevicePath = UK_Data.return_value;//获得返回的UK的路径
|
s_simnew1.GetVersion(DevicePath); //发送命令取UK的版本
|
}
|
break;
|
case 2:
|
{
|
if (UK_Data.LastError != 0) {
|
console.log("返回版本号错误,错误码为:" + UK_Data.LastError.toString());
|
s_simnew1.Socket_UK.close();
|
return false;
|
}
|
version = UK_Data.return_value;//获得返回的UK的版本
|
if (version > 10) {
|
//取得锁的出厂编码
|
s_simnew1.GetProduceDate(DevicePath);//发送命令取UK的出厂编码
|
} else {
|
console.log("锁的版本少于11,不支持返回锁的出厂编码功能\n2013年9月15号以后出厂的锁都支持这个功能。");
|
}
|
}
|
break;
|
case 3:
|
{
|
if (UK_Data.LastError != 0) {
|
console.log("取得锁的出厂编码错误,错误码为:" + UK_Data.LastError.toString());
|
s_simnew1.Socket_UK.close();
|
return false;
|
}
|
let id = UK_Data.return_value;//获得返回的UK的出厂编码
|
// context.commit('changeId', id);
|
this.changeUKeyId(id);
|
//所有工作处理完成后,关掉Socket
|
s_simnew1.Socket_UK.close();
|
}
|
break;
|
default:
|
{
|
//所有工作处理完成后,关掉Socket
|
s_simnew1.Socket_UK.close();
|
}
|
break;
|
}
|
}
|
s_simnew1.Socket_UK.onclose = () => {
|
console.log('初始化设置uKey插拔状态和uKey唯一编号监控程序关闭');
|
}
|
return true;
|
} catch (e) {
|
console.log('设置uKey插拔状态和uKey唯一编号监控程序报错');
|
console.log(error.name + ": " + error.message);
|
return false;
|
}
|
} else {
|
// context.commit('changeIsIn', 0);
|
this.changeIsIn(0);
|
}
|
},
|
changeId(isIn) {
|
if (isIn) {
|
try {
|
let s_simnew1 = new SoftKey3W(); //创建UK类
|
let DevicePath, version;
|
s_simnew1.Socket_UK.onopen = () => {
|
s_simnew1.ResetOrder();//这里调用ResetOrder将计数清零,这样,消息处理处就会收到0序号的消息,通过计数及序号的方式,从而生产流程
|
}
|
|
s_simnew1.Socket_UK.onmessage = (Msg) => {
|
let UK_Data = JSON.parse(Msg.data);
|
if (UK_Data.type != "Process") return;//如果不是流程处理消息,则跳过
|
switch (UK_Data.order) {
|
case 0:
|
{
|
s_simnew1.FindPort(0); //发送命令取UK的路径
|
}
|
break;
|
case 1:
|
{
|
if (UK_Data.LastError != 0) {
|
// context.commit('changeId', ""); // 初始化uKeyId为空
|
this.changeUKeyId("");
|
s_simnew1.Socket_UK.close();
|
return false;
|
}
|
DevicePath = UK_Data.return_value;//获得返回的UK的路径
|
s_simnew1.GetVersion(DevicePath); //发送命令取UK的版本
|
}
|
break;
|
case 2:
|
{
|
if (UK_Data.LastError != 0) {
|
console.log("返回版本号错误,错误码为:" + UK_Data.LastError.toString());
|
s_simnew1.Socket_UK.close();
|
return false;
|
}
|
version = UK_Data.return_value;//获得返回的UK的版本
|
if (version > 10) {
|
//取得锁的出厂编码
|
s_simnew1.GetProduceDate(DevicePath);//发送命令取UK的出厂编码
|
} else {
|
console.log("锁的版本少于11,不支持返回锁的出厂编码功能\n2013年9月15号以后出厂的锁都支持这个功能。");
|
}
|
}
|
break;
|
case 3:
|
{
|
if (UK_Data.LastError != 0) {
|
console.log("取得锁的出厂编码错误,错误码为:" + UK_Data.LastError.toString());
|
s_simnew1.Socket_UK.close();
|
return false;
|
}
|
let id = UK_Data.return_value;//获得返回的UK的出厂编码
|
// context.commit('changeId', id);
|
this.changeUKeyId(id);
|
//所有工作处理完成后,关掉Socket
|
s_simnew1.Socket_UK.close();
|
}
|
break;
|
default:
|
{
|
//所有工作处理完成后,关掉Socket
|
s_simnew1.Socket_UK.close();
|
}
|
break;
|
}
|
}
|
s_simnew1.Socket_UK.onclose = () => {
|
console.log('设置uKey唯一编号监控程序关闭');
|
}
|
return true;
|
} catch (e) {
|
console.log('设置uKey唯一编号监控程序报错');
|
console.log(error.name + ": " + error.message);
|
return false;
|
}
|
} else {
|
// context.commit("changeId", "");
|
this.changeUKeyId("");
|
}
|
}
|
}
|
});
|