37 changed files with 4542 additions and 1606 deletions
|
After Width: | Height: | Size: 272 KiB |
|
After Width: | Height: | Size: 252 KiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 176 KiB |
@ -0,0 +1,14 @@
|
||||
1 |
||||
http://65.47.6.105:18080/#/play/wasm/ws%3A%2F%2F65.47.6.105%3A8080%2Frtp%2F43012457021185000003_34020000001320000033.live.flv |
||||
|
||||
2 |
||||
http://65.47.6.105:18080/#/play/wasm/ws%3A%2F%2F65.47.6.105%3A8080%2Frtp%2F43012457021185000003_34020000001320000028.live.flv |
||||
|
||||
3 |
||||
http://65.47.6.105:18080/#/play/wasm/ws%3A%2F%2F65.47.6.105%3A8080%2Frtp%2F43012457021185000003_34020000001320000002.live.flv |
||||
|
||||
4 |
||||
http://65.47.6.105:18080/#/play/wasm/ws%3A%2F%2F65.47.6.105%3A8080%2Frtp%2F43012457021185000003_34020000001320000019.live.flv |
||||
|
||||
5 |
||||
http://65.47.6.105:18080/#/play/wasm/ws%3A%2F%2F65.47.6.105%3A8080%2Frtp%2F43012457021185000003_34020000001320000011.live.flv |
||||
@ -0,0 +1,246 @@
|
||||
/* eslint-disable */ |
||||
var JIT_AUTHEN = function () { |
||||
|
||||
// initParam:PNX初始化参数,数据可从网关系统:认证管理->Key类型管理中导出
|
||||
var initParam = "<?xml version=\"1.0\" encoding=\"utf-8\"?>" + |
||||
"<authinfo><liblist>" + |
||||
"<lib type=\"CSP\" version=\"1.0\" dllname=\"\" ><algid val=\"SHA1\" sm2_hashalg=\"sm3\"/></lib>" + //软证书
|
||||
"<lib type=\"SKF\" version=\"1.1\" dllname=\"U0tGQVBJMjAwNzkuZGxs\" ><algid val=\"SHA1\" sm2_hashalg=\"sm3\"/></lib>" + //SKFAPI20079.dll 海泰20079
|
||||
"</liblist><checkkeytimes><item times=\"1\" ></item></checkkeytimes></authinfo>"; |
||||
|
||||
//请求随机数地址
|
||||
var randomUrl = "/api/jitGWRandom"; |
||||
//请求p7认证地址
|
||||
var P7certAuthUrl = "/api/jitGWAuthP7"; |
||||
//请求p1认证地址
|
||||
var P1certAuthUrl = "/api/jitGWAuthP1"; |
||||
|
||||
return{ |
||||
InitParam : initParam, |
||||
//请求生成随机数
|
||||
random : function () { |
||||
var randomResult = ""; |
||||
$.ajax({ |
||||
url : randomUrl, |
||||
type : "post", |
||||
async: false, |
||||
data : "", |
||||
success : function (data) { |
||||
randomResult= data; |
||||
}, |
||||
error : function () { |
||||
}, |
||||
datatype : "json" |
||||
}) |
||||
return randomResult; |
||||
}, |
||||
|
||||
//请求p7认证方法
|
||||
P7certAuth : function (random,signed_data) { |
||||
var authResult = ""; |
||||
$.ajax({ |
||||
url : P7certAuthUrl, |
||||
type : "post", |
||||
async: false, |
||||
data : {"random":random,"signed_data":signed_data}, |
||||
success : function (data) { |
||||
authResult = data ; |
||||
}, |
||||
error : function () { |
||||
}, |
||||
datatype : "json", |
||||
}) |
||||
return authResult; |
||||
}, |
||||
|
||||
//请求p1认证
|
||||
P1certAuth : function (random,signed_data,certBase64,hashAlg) { |
||||
var authResult = ""; |
||||
$.ajax({ |
||||
url : P1certAuthUrl, |
||||
type : "post", |
||||
async: false, |
||||
data : {"random":random,"signed_data":signed_data,"certBase64":certBase64,"hashAlg":hashAlg}, |
||||
success : function (data) { |
||||
authResult = data ; |
||||
}, |
||||
error : function () { |
||||
}, |
||||
datatype : "json", |
||||
}) |
||||
return authResult; |
||||
}, |
||||
|
||||
//p7方式签名数据处理
|
||||
AuthP7Sign: function (random) { |
||||
// 调用网关工具脚本中的detachSignStr(P7)进行签名,并返回签名结果
|
||||
var sign_Result = ""; |
||||
try { |
||||
//用于判断插件是否可用(可选)
|
||||
JIT_GW_ExtInterface.GetVersion(); |
||||
} catch (e) { |
||||
alert("未安装控件,请进行安装控件"); |
||||
window.location.href = "/PNXClient.exe"; |
||||
} |
||||
try { |
||||
//清理过滤条件(可选)
|
||||
JIT_GW_ExtInterface.ClearFilter(); |
||||
// 初始化KEY信息
|
||||
JIT_GW_ExtInterface.Initialize("", initParam); |
||||
// 控制证书为一个时,不弹出证书选择框(可选)
|
||||
JIT_GW_ExtInterface.SetChooseSingleCert(1); |
||||
// 添加过滤条件,颁发者过滤、同DN时SM2优先级设置等(可选)
|
||||
//同DN情况下优先使用sm2证书
|
||||
// JIT_GW_ExtInterface.AddFilter(11,"2");
|
||||
//强制弹PIN码(可选)
|
||||
//JIT_GW_ExtInterface.SetForcePinDialog(0);
|
||||
} catch (e) { |
||||
alert("调用方法失败:" + JIT_GW_ExtInterface.GetLastErrorMessage()); |
||||
} |
||||
try { |
||||
// 原文做P7签名
|
||||
sign_Result = JIT_GW_ExtInterface.P7SignString(random, true, true); |
||||
} catch (e) { |
||||
alert("生成签名信息失败:" + JIT_GW_ExtInterface.GetLastErrorMessage()); |
||||
} |
||||
if (JIT_GW_ExtInterface.GetLastError() != 0) { |
||||
if (JIT_GW_ExtInterface.GetLastError() == 3758096386 || JIT_GW_ExtInterface.GetLastError() == 2148532334 || JIT_GW_ExtInterface.GetLastError() == 3758096385) { |
||||
alert("用户取消操作"); |
||||
} else if (JIT_GW_ExtInterface.GetLastError() == -536870815 || JIT_GW_ExtInterface.GetLastError() == 3758096481) { |
||||
alert("没有找到有效的证书,如果使用的是KEY,请确认已经插入key"); |
||||
} else { |
||||
alert(JIT_GW_ExtInterface.GetLastErrorMessage()); |
||||
} |
||||
} |
||||
// 释放签名对象
|
||||
JIT_GW_ExtInterface.Finalize(); |
||||
// 返回签名结果
|
||||
return sign_Result; |
||||
}, |
||||
|
||||
//p7带下拉框方式的签名数据处理
|
||||
AuthP7Sign_certSelect : function(authContent, certsn) { |
||||
var sign_Result = ""; |
||||
try { |
||||
// 用于判断插件是否可用(可选)
|
||||
JIT_GW_ExtInterface.GetVersion(); |
||||
} catch (e) { |
||||
alert("未安装控件,请进行安装控件"); |
||||
window.location.href = "/PNXClient.exe"; |
||||
} |
||||
try { |
||||
//清理过滤条件(可选)
|
||||
JIT_GW_ExtInterface.ClearFilter(); |
||||
// 初始化KEY信息
|
||||
JIT_GW_ExtInterface.Initialize("", initParam); |
||||
//下拉框参考Cert_Select方法
|
||||
// 根据SN过滤唯一证书
|
||||
JIT_GW_ExtInterface.AddFilter(1,certsn); |
||||
// 设置单证书不弹出对话框
|
||||
JIT_GW_ExtInterface.SetChooseSingleCert(1); |
||||
//强制弹PIN码(可选)
|
||||
JIT_GW_ExtInterface.SetForcePinDialog(0); |
||||
} catch (e) { |
||||
alert("调用方法失败:" + JIT_GW_ExtInterface.GetLastErrorMessage()); |
||||
} |
||||
try { |
||||
// 原文做P7签名
|
||||
sign_Result = JIT_GW_ExtInterface.P7SignString (authContent, true, true); |
||||
} catch (e) { |
||||
alert("生成签名信息失败:" + JIT_GW_ExtInterface.GetLastErrorMessage()); |
||||
} |
||||
if (JIT_GW_ExtInterface.GetLastError() != 0) { |
||||
if (JIT_GW_ExtInterface.GetLastError() == 3758096386 |
||||
|| JIT_GW_ExtInterface.GetLastError() == 2148532334 || JIT_GW_ExtInterface.GetLastError() == 3758096385) { |
||||
alert("用户取消操作"); |
||||
} else if (JIT_GW_ExtInterface.GetLastError() == -536870815 |
||||
|| JIT_GW_ExtInterface.GetLastError() == 3758096481) { |
||||
alert("没有找到有效的证书,如果使用的是KEY,请确认已经插入key"); |
||||
} else { |
||||
alert(JIT_GW_ExtInterface.GetLastErrorMessage()); |
||||
} |
||||
} |
||||
// 释放签名对象
|
||||
JIT_GW_ExtInterface.Finalize(); |
||||
// 返回签名结果对象
|
||||
return sign_Result; |
||||
}, |
||||
|
||||
//p1带下拉框方式的签名数据处理
|
||||
AuthP1Sign_certSelect : function(random, certsn, pin) { |
||||
var sign_ResultObj = ""; |
||||
try { |
||||
// 用于判断插件是否可用(可选)
|
||||
JIT_GW_ExtInterface.GetVersion(); |
||||
} catch (e) { |
||||
alert("未安装控件,请进行安装控件"); |
||||
window.location.href = "/PNXClient.exe"; |
||||
} |
||||
try { |
||||
//清理过滤条件(可选)
|
||||
JIT_GW_ExtInterface.ClearFilter(); |
||||
// 初始化KEY信息
|
||||
JIT_GW_ExtInterface.Initialize("", initParam); |
||||
} catch (e) { |
||||
alert("调用方法失败:" + JIT_GW_ExtInterface.GetLastErrorMessage()); |
||||
} |
||||
//下拉框展示部分参考p1Select方法
|
||||
try { |
||||
// 原文做P1签名
|
||||
var signobj = JIT_GW_ExtInterface.P1SignWithPin(certsn, pin, random); |
||||
sign_ResultObj = JSON.parse(signobj); |
||||
if (sign_ResultObj.result != 0) { |
||||
if (sign_ResultObj.remainretrycount < 0) { |
||||
var errorMessage = JIT_GW_ExtInterface.GetLastErrorMessage(); |
||||
alert(errorMessage); |
||||
} else { |
||||
alert("输入的pin码不正确,还剩余" + sign_ResultObj.remainretrycount + "次重试次数"); |
||||
} |
||||
} |
||||
} catch (e) { |
||||
alert("生成签名信息失败:" + JIT_GW_ExtInterface.GetLastErrorMessage()); |
||||
} |
||||
if (JIT_GW_ExtInterface.GetLastError() != 0) { |
||||
if (JIT_GW_ExtInterface.GetLastError() == 3758096386 |
||||
|| JIT_GW_ExtInterface.GetLastError() == 2148532334 || JIT_GW_ExtInterface.GetLastError() == 3758096385) { |
||||
alert("用户取消操作"); |
||||
} else if (JIT_GW_ExtInterface.GetLastError() == -536870815 |
||||
|| JIT_GW_ExtInterface.GetLastError() == 3758096481) { |
||||
alert("没有找到有效的证书,如果使用的是KEY,请确认已经插入key"); |
||||
} else { |
||||
alert(JIT_GW_ExtInterface.GetLastErrorMessage()); |
||||
} |
||||
} |
||||
// 释放签名对象
|
||||
JIT_GW_ExtInterface.Finalize(); |
||||
// 返回签名结果对象
|
||||
return sign_ResultObj; |
||||
}, |
||||
|
||||
//获取证书列表
|
||||
getCertList : function () { |
||||
// 初始化KEY信息
|
||||
JIT_GW_ExtInterface.Initialize("",initParam); |
||||
// 添加过滤条件,颁发者过滤、同DN时SM2优先级设置等(可选)
|
||||
//同DN情况下优先使用sm2证书
|
||||
// JIT_GW_ExtInterface.AddFilter(11,"2");
|
||||
// 获取证书列表
|
||||
var cert = JIT_GW_ExtInterface.GetCertList(); |
||||
var arr = cert.split("\r\n"); |
||||
var options=[]; |
||||
for (var i = 0; i < arr.length; i++) { |
||||
var option={}; |
||||
var ele = arr[i]; |
||||
var n = ele.lastIndexOf(" "); |
||||
var dn = ele.substr(0, n); |
||||
var sn = ele.substr(n + 1); |
||||
option.sn=sn; |
||||
option.dn=dn; |
||||
options.push(option); |
||||
} |
||||
// 释放签名对象
|
||||
JIT_GW_ExtInterface.Finalize(); |
||||
return options; |
||||
}, |
||||
} |
||||
}(); |
||||
@ -0,0 +1,873 @@
|
||||
/* eslint-disable */ |
||||
var JIT_GW_ExtInterface = function(){ |
||||
|
||||
var currentSessionWSURL = ""; |
||||
var useActioveX = false; |
||||
var useNPPlugin = false; |
||||
|
||||
/** |
||||
* simple polyfill Object.assign for IE <= 11 |
||||
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
|
||||
* @param {Object} target - target options |
||||
* @param {Object} options - new options |
||||
*/ |
||||
var extendOptions = function (target, options) { |
||||
if (typeof Object.assign === 'function') { |
||||
Object.assign(target, options) |
||||
} else { |
||||
// for IE < 11
|
||||
for (var key in options) { |
||||
target[key] = options[key] |
||||
} |
||||
} |
||||
} |
||||
|
||||
var options = {}; |
||||
|
||||
var checkSessionWSURL = function () |
||||
{ |
||||
if( currentSessionWSURL=="" ) |
||||
{ |
||||
if ("https:" == document.location.protocol) |
||||
{ |
||||
currentSessionWSURL = SendAndWaitMessage("https://127.0.0.1:10087/", "QueryService");
|
||||
} |
||||
else |
||||
{ |
||||
currentSessionWSURL = SendAndWaitMessage("http://127.0.0.1:10086/", "QueryService");
|
||||
} |
||||
} |
||||
} |
||||
|
||||
// 是否是IE
|
||||
var isUseActioveX = function () |
||||
{ |
||||
if (!!window.ActiveXObject || "ActiveXObject" in window) |
||||
{ |
||||
//try
|
||||
//{
|
||||
// var ax = new ActiveXObject("PNXClient.PNXDataTrans");
|
||||
// useActioveX = true;
|
||||
//}
|
||||
//catch(e)
|
||||
//{
|
||||
// useActioveX = false;
|
||||
//}
|
||||
useActioveX = true; |
||||
} |
||||
else |
||||
{ |
||||
useActioveX = false; |
||||
} |
||||
} |
||||
|
||||
// 是否使用NPPlugin
|
||||
var isUseNPPlugin = function() |
||||
{ |
||||
checkSessionWSURL(); |
||||
if ("{\"value\":\"\"}" == currentSessionWSURL) |
||||
{ |
||||
useNPPlugin = true; |
||||
} |
||||
else |
||||
{ |
||||
useNPPlugin = false; |
||||
} |
||||
} |
||||
|
||||
var addActioveX = function(){ |
||||
document.write("<object classid='clsid:9DD991F7-6FB0-4004-95A4-0A55006A8C42' width='0' height='0' id='PNXGWClient'></object>"); |
||||
} |
||||
|
||||
var addNPPlugin = function(){ |
||||
document.write("<embed type='application/x-jit-auth-plugin' id='PNXGWClient' width='0' height='0'></embed>"); |
||||
} |
||||
|
||||
var SendAndWaitMessageEx = function (operatorCmd, sendMsg) |
||||
{ |
||||
checkSessionWSURL(); |
||||
var strSendMsg = operatorCmd + ":" + sendMsg; |
||||
|
||||
return SendAndWaitMessage(currentSessionWSURL, strSendMsg); |
||||
} |
||||
|
||||
var SendAndWaitMessage = function (wsurl, sendMsg) |
||||
{ |
||||
var ResultMsg = "{\"value\":\"\"}"; |
||||
|
||||
if( ResultMsg == wsurl ) |
||||
{ |
||||
return ; |
||||
} |
||||
try{ |
||||
var globalXmlHttpRequest = new XMLHttpRequest(); |
||||
globalXmlHttpRequest.open("POST", wsurl, false); |
||||
globalXmlHttpRequest.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"); |
||||
globalXmlHttpRequest.send(sendMsg); |
||||
ResultMsg = globalXmlHttpRequest.responseText; |
||||
}catch(e){ |
||||
currentSessionWSURL = ""; |
||||
if (options.onError) { |
||||
options.onError.call(undefined, e); |
||||
} |
||||
} |
||||
return ResultMsg; |
||||
} |
||||
|
||||
return { |
||||
Config: function(extendOption) { |
||||
if (extendOption && typeof extendOption === 'object') { |
||||
extendOptions(options, extendOption) |
||||
} |
||||
}, |
||||
Init: function() |
||||
{ |
||||
isUseActioveX(); |
||||
if (useActioveX) { |
||||
addActioveX(); |
||||
} |
||||
else |
||||
{ |
||||
isUseNPPlugin(); |
||||
if (useNPPlugin){ |
||||
addNPPlugin(); |
||||
}
|
||||
} |
||||
}, |
||||
// 功能:返回客户端的版本 HRESULT GetClientVersion([out,retval] BSTR* bstrClientVersion);
|
||||
GetClientVersion: function() |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetClientVersion(); |
||||
} |
||||
else |
||||
{ |
||||
var result = JSON.parse(SendAndWaitMessageEx("GetClientVersion", "")); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:下载客户端程序并安装 HRESULT SetupClient([in] BSTR strURL, [in] BSTR strHashValue, [in] BOOL bSync, [in] BOOL bOnlySSO, [out,retval] LONG* lRetVal);
|
||||
SetupClient: function (bstrURL, bstrHashValue, bSync, bOnlySSO) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.SetupClient(bstrURL, bstrHashValue, bSync, bOnlySSO); |
||||
} |
||||
else |
||||
{
|
||||
var jsonstr = {"strURL":bstrURL,"strHashValue":bstrHashValue,"bSync":bSync,"bOnlySSO":bOnlySSO}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("SetupClient", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:获取硬件指纹信息 HRESULT GetFinger([in] ULONG dwSign, [in] BSTR strGateWayIP, [out,retval] BSTR* bstrFinger);
|
||||
GetFinger: function (dwSign, strGateWayIP) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetFinger(dwSign, strGateWayIP); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"dwSign":dwSign, "strGateWayIP":strGateWayIP}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("GetFinger", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:设置转发策略和代填策略 HRESULT SetPolicy([in] BSTR strProxyPolicy, [in] BSTR strSSOPolicy, [in] BSTR strGatewayAddress, [out,retval] LONG* lRetVal);
|
||||
SetPolicy:function (strProxyPolicy, strSSOPolicy, strGatewayAddress) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.SetPolicy(strProxyPolicy, strSSOPolicy, strGatewayAddress); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strProxyPolicy":strProxyPolicy, "strSSOPolicy":strSSOPolicy, "strGatewayAddress":strGatewayAddress}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("SetPolicy", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:启动认证信息模块 HRESULT GetAuthToken([in] BSTR strFileName,[in] BSTR strXmlData,[out,retval] BSTR* bstrInfo);
|
||||
GetAuthToken: function (strFileName, strXmlData) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetAuthToken(strFileName, strXmlData); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strFileName":strFileName, "strXmlData":strXmlData}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("GetAuthToken", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:打开BS应用 HRESULT NavigateURL([in] BSTR strUrl, [out,retval] LONG* lRetVal);
|
||||
NavigateURL: function (strUrl) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.NavigateURL(strUrl); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strUrl":strUrl}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("NavigateURL", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:打开CS应用 HRESULT ExecuteCS([in] BSTR strGatewayAddress, [in] BSTR strAppFlag, [in] BSTR strAppPath, [out,retval] LONG* lRetVal);
|
||||
ExecuteCS: function (strGatewayAddress, strAppFlag, strAppPath) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.ExecuteCS(strGatewayAddress, strAppFlag, strAppPath); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strGatewayAddress":strGatewayAddress, "strAppFlag":strAppFlag, "strAppPath":strAppPath}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("ExecuteCS", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:设置自动更新策略 HRESULT SetUpdatePolicy([in] BSTR strGatewayAddress, [in] SHORT nGatewayPort, [in] BSTR strUserToken, [in] ULONG ulUpdateDelay, [out, retval] LONG* lRetVal);
|
||||
SetUpdatePolicy: function (strGatewayAddress, nGatewayPort, strUserToken, updatedelay) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.SetUpdatePolicy(strGatewayAddress, nGatewayPort, strUserToken, updatedelay); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strGatewayAddress":strGatewayAddress, "nGatewayPort":nGatewayPort, "strUserToken":strUserToken, "ulUpdateDelay":updatedelay}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("SetUpdatePolicy", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:获取客户端IP HRESULT GetClientIP([in] BSTR strGatewayIP, [out, retval] BSTR* RetVal);
|
||||
GetClientIP: function (strGatewayIP) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetClientIP(strGatewayIP); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strGatewayIP":strGatewayIP}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("GetClientIP", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:登出网关 HRESULT GWLogout([in] BSTR strServerIP, [out, retval] LONG* lRetVal);
|
||||
GWLogout: function (strServerIP) |
||||
{
|
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GWLogout(strServerIP); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strServerIP":strServerIP}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("GWLogout", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:运行安装包: 0 非静默安装,1 静默安装,2 同步安装,4 异步安装 HRESULT RunSetup([in] LONG lRunType, [in] BOOL bIsOnlySSO, [out, retval] LONG* lRetVal);
|
||||
RunSetup: function (lRunType, bIsOnlySSO) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.RunSetup(lRunType, bIsOnlySSO); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"lRunType":lRunType, "bIsOnlySSO":bIsOnlySSO}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("RunSetup", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:获取下载进度 HRESULT GetDownloadProgress([out, retval] LONG* lRetVal);
|
||||
GetDownloadProgress: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetDownloadProgress(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = "";
|
||||
var result = JSON.parse(SendAndWaitMessageEx("GetDownloadProgress", jsonstr)); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:是否安装完成 HRESULT IsInstallComplete([out, retval] BOOL* lRetVal);
|
||||
IsInstallComplete: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.IsInstallComplete(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = "";
|
||||
var result = JSON.parse(SendAndWaitMessageEx("IsInstallComplete", jsonstr)); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:初始化签包对象 HRESULT Initialize([in] BSTR strAlgType, [in] BSTR strAuxParam, [out,retval] LONG* Result);
|
||||
Initialize: function (strAlgType, strAuxParam) |
||||
{ |
||||
if(useActioveX|| useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.Initialize(strAlgType, strAuxParam); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = { "strAlgType":strAlgType, "strAuxParam":strAuxParam }; |
||||
var result = JSON.parse(SendAndWaitMessageEx("Initialize", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:设置摘要算法 HRESULT SetDigestAlg([in] BSTR strDigestAlg, [out,retval] LONG* Result);
|
||||
SetDigestAlg: function (strDigestAlg) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.SetDigestAlg(strDigestAlg); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strDigestAlg":strDigestAlg}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("SetDigestAlg", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:设置单证书是否弹出对话框 HRESULT SetChooseSingleCert([in] ULONG isChoose, [out,retval] LONG* Result);
|
||||
SetChooseSingleCert: function (isChoose) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.SetChooseSingleCert(isChoose); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"isChoose":isChoose}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("SetChooseSingleCert", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:添加证书过滤条件 HRESULT AddFilter([in] ULONG ulType, [in] BSTR strValue, [out,retval] LONG* Result);
|
||||
AddFilter: function (ulType, strValue) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.AddFilter(ulType, strValue); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"ulType":ulType, "strValue":strValue}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("AddFilter", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:清除所有过滤条件 HRESULT ClearFilter([out,retval] LONG* Result);
|
||||
ClearFilter: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.ClearFilter(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = "";
|
||||
var result = JSON.parse(SendAndWaitMessageEx("ClearFilter", jsonstr)); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:P1签名 HRESULT P1Sign([in] BSTR strValueBase64, [out,retval] BSTR* Result);
|
||||
P1Sign: function (strValueBase64) |
||||
{ |
||||
if(useActioveX|| useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.P1Sign(strValueBase64); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strValueBase64":strValueBase64}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("P1Sign", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:P1签名字符串 HRESULT P1SignString([in] BSTR strValue, [out,retval] BSTR* Result);
|
||||
P1SignString: function (strValue) |
||||
{
|
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.P1SignString(strValue); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strValue":strValue}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("P1SignString", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:P7签名 HRESULT P7Sign([in] BSTR strValueBase64,[in] VARIANT_BOOL isDetach,[in] VARIANT_BOOL isIncludeCert, [out,retval] BSTR* Result);
|
||||
P7Sign: function (strValueBase64, isDetach, isIncludeCert) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.P7Sign(strValueBase64, isDetach, isIncludeCert); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strValueBase64":strValueBase64, "isDetach":isDetach, "isIncludeCert":isIncludeCert}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("P7Sign", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:P7签名字符串 HRESULT P7SignString([in] BSTR strValue,[in] VARIANT_BOOL isDetach,[in] VARIANT_BOOL isIncludeCert, [out,retval] BSTR* Result);
|
||||
P7SignString: function (strValue, isDetach, isIncludeCert) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.P7SignString(strValue, isDetach, isIncludeCert); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strValue":strValue, "isDetach":isDetach, "isIncludeCert":isIncludeCert}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("P7SignString", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:释放签名对象 HRESULT Finalize([out,retval] LONG* Result);
|
||||
Finalize: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.Finalize(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = "";
|
||||
var result = JSON.parse(SendAndWaitMessageEx("Finalize", jsonstr)); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:获取签名版本 HRESULT GetSignVersion([out,retval] BSTR* Result);
|
||||
GetSignVersion: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetSignVersion(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = "";
|
||||
var result = JSON.parse(SendAndWaitMessageEx("GetSignVersion", jsonstr)); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:获取签名证书 HRESULT GetSignCert([out,retval] BSTR* RetCert);
|
||||
GetSignCert: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetSignCert(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = "";
|
||||
var result = JSON.parse(SendAndWaitMessageEx("GetSignCert", jsonstr)); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:获取错误码 HRESULT GetLastError([out,retval] ULONG* RetLong);
|
||||
GetLastError: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetLastError(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = "";
|
||||
var result = JSON.parse(SendAndWaitMessageEx("GetLastError", jsonstr)); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:获取错误信息 HRESULT GetLastErrorMessage([out,retval] BSTR* RetStr);
|
||||
GetLastErrorMessage: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetLastErrorMessage(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = "";
|
||||
var result = JSON.parse(SendAndWaitMessageEx("GetLastErrorMessage", jsonstr)); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:销毁认证对象 HRESULT DestoryAuth([out,retval] LONG* lRetVal);
|
||||
DestoryAuth: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.DestoryAuth(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = "";
|
||||
var result = JSON.parse(SendAndWaitMessageEx("DestoryAuth", jsonstr)); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:获取证书类型 HRESULT GetSignCertType([out,retval] BSTR* RetCertType);
|
||||
GetSignCertType: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetSignCertType(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = "";
|
||||
var result = JSON.parse(SendAndWaitMessageEx("GetSignCertType", jsonstr)); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:获取签名摘要算法 HRESULT GetSignHash([out,retval] BSTR* RetSignHash);
|
||||
GetSignHash: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetSignHash(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = "";
|
||||
var result = JSON.parse(SendAndWaitMessageEx("GetSignHash", jsonstr)); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:使能调用序列 HRESULT CallQueueEnable([in] BOOL bCallQueueEnable, [in] BOOL bHeadInfoEnable, [out,retval] LONG* lRetVal);
|
||||
CallQueueEnable: function (bCallQueueEnable, bHeadInfoEnable) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.CallQueueEnable(bCallQueueEnable, bHeadInfoEnable); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"bCallQueueEnable":bCallQueueEnable, "bHeadInfoEnable":bHeadInfoEnable}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("CallQueueEnable", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:清空调用序列结果 HRESULT CallQueueClear([out,retval] LONG* lRetVal);
|
||||
CallQueueClear: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.CallQueueClear(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = "";
|
||||
var result = JSON.parse(SendAndWaitMessageEx("CallQueueClear", jsonstr)); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:获取调用序列结果 HRESULT CallQueueGet([out,retval] BSTR* bstrRetVal);
|
||||
CallQueueGet: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.CallQueueGet(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = "";
|
||||
var result = JSON.parse(SendAndWaitMessageEx("CallQueueGet", jsonstr)); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:客户端安全策略检查 HRESULT DoClientSecurityCheck([in] BSTR strGatewayAddress, [in] SHORT usGatewayPort, [in] BSTR strSecurityPolicys, [out,retval] BOOL* RetVal);
|
||||
DoClientSecurityCheck: function (strGatewayAddress, usGatewayPort, strSecurityPolicys) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.DoClientSecurityCheck(strGatewayAddress, usGatewayPort, strSecurityPolicys); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strGatewayAddress":strGatewayAddress, "usGatewayPort":usGatewayPort, "strSecurityPolicys":strSecurityPolicys}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("DoClientSecurityCheck", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:获取通讯协议版本 HRESULT GetProtocolVersion([out,retval] BSTR* strProtocolVersion);
|
||||
GetProtocolVersion: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetProtocolVersion(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = "";
|
||||
var result = JSON.parse(SendAndWaitMessageEx("GetProtocolVersion", jsonstr)); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:修改Key的Pin码 HRESULT ChangePinCode([in] BSTR strCertSn, [in] LONG lPinCodeType, [in] BSTR strCurPinCode, [in] BSTR strNewPinCode, [out,retval] LONG *pRet);
|
||||
ChangePinCode: function (strCertSn, lPinCodeType, strCurPinCode, strNewPinCode) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.ChangePinCode(strCertSn, lPinCodeType, strCurPinCode, strNewPinCode); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strCertSn":strCertSn, "lPinCodeType":lPinCodeType, "strCurPinCode":strCurPinCode, "strNewPinCode":strNewPinCode}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("ChangePinCode", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:等待策略设置完毕 HRESULT WaitSetPolicyFinish([in] BSTR strGatewayAddress, [out,retval] LONG* lRetVal);
|
||||
WaitSetPolicyFinish: function (strGatewayAddress) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.WaitSetPolicyFinish(strGatewayAddress); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strGatewayAddress":strGatewayAddress}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("WaitSetPolicyFinish", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:获取会话Token HRESULT GetSessionToken([in] BSTR strGatewayAddress, [out,retval] BSTR* bstrToken);
|
||||
GetSessionToken: function (strGatewayAddress) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetSessionToken(strGatewayAddress); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strGatewayAddress":strGatewayAddress}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("GetSessionToken", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:获取控件版本 HRESULT GetVersion([out,retval] BSTR* bstrRetVal);
|
||||
GetVersion: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetVersion(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = "";
|
||||
var result = JSON.parse(SendAndWaitMessageEx("GetVersion", jsonstr)); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:设置语言资源 HRESULT SetLanguage([in] BSTR strLanguage, [out,retval] LONG* Result);
|
||||
SetLanguage: function (strLanguage) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.SetLanguage(strLanguage); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strLanguage":strLanguage}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("SetLanguage", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:获取用户属性 HRESULT GetAttribute([in] BSTR strGatewayAddress, [in] BSTR strAppFlag, [in] BSTR strAttributeName, [out, retval] BSTR* attributevalue);
|
||||
GetAttribute: function (strGatewayAddress, strAppFlag, strAttributeName) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetAttribute(strGatewayAddress, strAppFlag, strAttributeName); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strGatewayAddress":strGatewayAddress, "strAppFlag":strAppFlag, "strAttributeName":strAttributeName}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("GetAttribute", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
//功能:获取签名加密PIN码 HRESULT GetPinCode([out,retval] BSTR* Result);
|
||||
GetPinCode: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetPinCode(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = "";
|
||||
var result = JSON.parse(SendAndWaitMessageEx("GetPinCode", JSON.stringify(jsonstr))); |
||||
return result.value;
|
||||
} |
||||
}, |
||||
|
||||
//功能:设置强制弹出PIN码框 HRESULT SetForcePinDialog([in] ULONG isForcePinDialog, [out,retval] LONG* Result);
|
||||
SetForcePinDialog: function (isForcePinDialog) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.SetForcePinDialog(isForcePinDialog); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"isForcePinDialog":isForcePinDialog}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("SetForcePinDialog", JSON.stringify(jsonstr))); |
||||
return result.value;
|
||||
}
|
||||
}, |
||||
|
||||
//功能:返回报文认证属性 HRESULT MessageAuth([in] BSTR bstrGatewayAddress, [in] BSTR bstrAttributeName, [in] BSTR bstrAppID,[out,retval] BSTR* bstrAttributeValue);
|
||||
MessageAuth: function (bstrGatewayAddress, bstrAttributeName, bstrAppID) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.MessageAuth(bstrGatewayAddress, bstrAttributeName, bstrAppID); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"bstrGatewayAddress":bstrGatewayAddress, "bstrAttributeName":bstrAttributeName, "bstrAppID":bstrAppID}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("MessageAuth", JSON.stringify(jsonstr))); |
||||
return result.value;
|
||||
} |
||||
}, |
||||
// 功能:获取底板照片 HRESULT GetPhoto([in] BSTR bstrSvrIP, [in] USHORT usSvrPort, [in] BSTR bstrID, [out,retval] BSTR* bstrBase64);
|
||||
GetPhoto: function (bstrSvrIP, usSvrPort, bstrID) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetPhoto(bstrSvrIP, usSvrPort, bstrID); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"bstrSvrIP":bstrSvrIP, "usSvrPort":usSvrPort, "bstrID":bstrID}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("GetPhoto", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
// 功能:获取证书列表 HRESULT GetCertList([out,retval] BSTR* pbstrResult);
|
||||
// 证书间用换行符分割,证书各项间用空格符分割
|
||||
GetCertList: function() |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.GetCertList(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = ""; |
||||
var result = JSON.parse(SendAndWaitMessageEx("GetCertList", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
// 功能:设置pin码并获取签名结果 HRESULT P1SignWithPin([in] BSTR bstrSN, [in] BSTR bstrPIN, [in] BSTR bstrOrg, [out, retval] BSTR* bstrResult);
|
||||
P1SignWithPin: function(bstrSN, bstrPIN, bstrOrg) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.P1SignWithPin(bstrSN, bstrPIN, bstrOrg); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"bstrSN":bstrSN, "bstrPIN":bstrPIN, "bstrOrg":bstrOrg}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("P1SignWithPin", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
}, |
||||
// 功能:清除所有过滤条件 HRESULT ClearFilterEx([out,retval] LONG* Result);
|
||||
ClearFilterEx: function () |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.ClearFilterEx(); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = ""; |
||||
var result = JSON.parse(SendAndWaitMessageEx("ClearFilterEx", jsonstr)); |
||||
return result.value; |
||||
} |
||||
}, |
||||
|
||||
//功能:设置会话token HRESULT SetSessionToken([in] BSTR bstrGwAddr, [in] BSTR bstrToken, [out, retval] LONG* Result)
|
||||
SetSessionToken: function(strGatewayAddress, strToken) |
||||
{ |
||||
if( useActioveX || useNPPlugin ) |
||||
{ |
||||
return PNXGWClient.SetSessionToken(strGatewayAddress, strToken); |
||||
} |
||||
else |
||||
{ |
||||
var jsonstr = {"strGatewayAddress":strGatewayAddress, "strToken":strToken}; |
||||
var result = JSON.parse(SendAndWaitMessageEx("SetSessionToken", JSON.stringify(jsonstr))); |
||||
return result.value; |
||||
} |
||||
} |
||||
} |
||||
}(); |
||||
|
||||
(function(){ |
||||
JIT_GW_ExtInterface.Init(); |
||||
})(); |
||||
Binary file not shown.
@ -0,0 +1,50 @@
|
||||
import request from "@/api/request"; |
||||
|
||||
|
||||
export function listComfort(query) { |
||||
return request.get({ |
||||
url: `/comfort`, |
||||
query: query |
||||
}); |
||||
} |
||||
|
||||
export function listTodos(query) { |
||||
return request.get({ |
||||
url: `/comfort/todo`, |
||||
query: query |
||||
}); |
||||
} |
||||
|
||||
export function listDone(query) { |
||||
return request.get({ |
||||
url: `/comfort/done`, |
||||
query: query |
||||
}); |
||||
} |
||||
|
||||
export function getDetail(id) { |
||||
return request.get({ |
||||
url: `/comfort/` + id, |
||||
}); |
||||
} |
||||
|
||||
export function applyComfort(body) { |
||||
return request.post({ |
||||
url: `/comfort`, |
||||
body |
||||
}); |
||||
} |
||||
|
||||
export function delComfort(id) { |
||||
return request.del({ |
||||
url: `/comfort/` + id |
||||
}); |
||||
} |
||||
|
||||
|
||||
export function comfortApprove(body) { |
||||
return request.post({ |
||||
url: `/comfort/approve`, |
||||
body |
||||
}); |
||||
} |
||||
@ -1,9 +1,9 @@
|
||||
import request from "@/api/request"; |
||||
|
||||
|
||||
export function listComfort(query) { |
||||
export function listRights(query) { |
||||
return request.get({ |
||||
url: `/comfort`, |
||||
url: `/rights`, |
||||
query: query |
||||
}); |
||||
} |
||||
@ -0,0 +1,35 @@
|
||||
import request from "@/api/request"; |
||||
|
||||
export function listRightPerson(query) { |
||||
return request.get({ |
||||
url: '/rightPerson', |
||||
query |
||||
}); |
||||
} |
||||
|
||||
// 获取当前单位的维权专干
|
||||
export function listRightPersonByDepartId(departId) { |
||||
return request.get({ |
||||
url: '/rightPerson/depart/' + departId |
||||
}); |
||||
} |
||||
|
||||
export function addRightPerson(body) { |
||||
return request.post({ |
||||
url: '/rightPerson', |
||||
body |
||||
}); |
||||
} |
||||
|
||||
export function updateRightPerson(body) { |
||||
return request.put({ |
||||
url: '/rightPerson', |
||||
body |
||||
}); |
||||
} |
||||
|
||||
export function delRightPerson(id) { |
||||
return request.del({ |
||||
url: '/rightPerson/' + id |
||||
}); |
||||
} |
||||
@ -0,0 +1,406 @@
|
||||
<template> |
||||
<el-dialog |
||||
:title="comfort.apply.number" |
||||
v-model="dialogShow" |
||||
width="60vw" |
||||
top="2vh" |
||||
style="margin-bottom: 0" |
||||
> |
||||
<el-scrollbar max-height="calc(96vh - 150px)"> |
||||
<h3>申请人信息</h3> |
||||
<div class="row"> |
||||
<div class="col col-6"> |
||||
<label>申请人姓名</label> |
||||
<span>{{ comfort.apply.applicantEmpName }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>性别</label> |
||||
<span> |
||||
<span v-if="comfort.person.sex === 0">男</span> |
||||
<span v-if="comfort.person.sex === 1">女</span> |
||||
</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>出生年月</label> |
||||
<span>{{ comfort.person.birthday }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>文化程度</label> |
||||
<span>{{ comfort.person.levelEducation }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>政治面貌</label> |
||||
<span>{{ comfort.person.politicCountenance }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>身份证号码</label> |
||||
<span>{{ comfort.person.idCode }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>联系电话</label> |
||||
<span>{{ comfort.person.mobile }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>单位</label> |
||||
<span>{{ comfort.person.departName }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>职务</label> |
||||
<span>{{ comfort.person.job }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>警号</label> |
||||
<span>{{ comfort.person.empNo }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>警衔</label> |
||||
<span>{{ comfort.person.policeRank }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>开户行</label> |
||||
<span>{{ comfort.person.bankCard }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>所属支行</label> |
||||
<span>{{ comfort.person.bankBranch }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>银行账号</label> |
||||
<span>{{ comfort.person.bankCardAccount }}</span> |
||||
</div> |
||||
</div> |
||||
<el-divider /> |
||||
<h3>案发情况</h3> |
||||
<div class="row"> |
||||
<div class="col col-6"> |
||||
<label>事发时间</label> |
||||
<span>{{ comfort.apply.happenTime }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>案发环节</label> |
||||
<span>{{ comfort.apply.incidentLinkName }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>受伤程度</label> |
||||
<span>{{ comfort.applyPerson.injurySeverity }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>办案单位</label> |
||||
<span>{{ comfort.apply.handleDepartName }}</span> |
||||
</div> |
||||
<div class="col col-24"> |
||||
<label>事实及理由</label> |
||||
<span>{{ comfort.apply.factReason }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>侵权形式</label> |
||||
<span>{{ comfort.apply.formsOfTortName }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>侵权人姓名</label> |
||||
<span>{{ comfort.apply.infringerName }}</span> |
||||
</div> |
||||
<div class="col col-6"> |
||||
<label>处理方式</label> |
||||
<span>{{ comfort.apply.infringerHandle }}</span> |
||||
</div> |
||||
</div> |
||||
<el-divider /> |
||||
<h3>佐证材料</h3> |
||||
<div> |
||||
<template v-if="comfort.apply.documentFile"> |
||||
<file-todos |
||||
:files="JSON.parse(comfort.apply.documentFile)" |
||||
/> |
||||
</template> |
||||
<template v-else> |
||||
<el-empty |
||||
description="无附件" |
||||
style="--el-empty-image-width: 50px" |
||||
/> |
||||
</template> |
||||
</div> |
||||
<el-divider /> |
||||
<h3>审批流程</h3> |
||||
<div class="comments-container flex gap-20"> |
||||
<div class="item"> |
||||
<div class="flex center mb-20 relative comments-header"> |
||||
<icon |
||||
name="el-icon-CircleCheck" |
||||
:size="41" |
||||
color="var(--primary-color)" |
||||
/> |
||||
</div> |
||||
<h1 class="text-center mb-16"> |
||||
<span class="text-primary">申请抚慰</span> |
||||
</h1> |
||||
<h2 class="text-center mb-20"> |
||||
{{ comfort.apply.applicantEmpName }} |
||||
</h2> |
||||
<div style="padding: 8px"> |
||||
<h4 class="text-right"> |
||||
{{ comfort.apply.applyDate }} |
||||
</h4> |
||||
</div> |
||||
</div> |
||||
<div class="item"> |
||||
<div class="flex center mb-20 relative comments-header"> |
||||
<template |
||||
v-if=" |
||||
comfort.approves.find((item) => item.step === 2) |
||||
" |
||||
> |
||||
<icon |
||||
name="local-icon-return" |
||||
:size="41" |
||||
color="#FF0606" |
||||
v-if=" |
||||
comfort.approves.find( |
||||
(item) => item.step === 2 |
||||
).returnFlag |
||||
" |
||||
/> |
||||
<icon |
||||
name="el-icon-CircleCheck" |
||||
:size="41" |
||||
color="var(--primary-color)" |
||||
v-else |
||||
/> |
||||
</template> |
||||
<div class="icon" v-else></div> |
||||
</div> |
||||
<h1 class="text-center mb-16"> |
||||
<span>待审批</span> |
||||
</h1> |
||||
<h2 class="text-center mb-20"> |
||||
维权专干 {{ comfort.apply.approver }} |
||||
</h2> |
||||
<div style="padding: 8px"> |
||||
<h3>{{}}</h3> |
||||
<p style="font-weight: 700">{{}}</p> |
||||
<h4 class="text-right">{{}}</h4> |
||||
</div> |
||||
</div> |
||||
<div class="item"> |
||||
<div class="flex center mb-20 relative comments-header"> |
||||
<template |
||||
v-if=" |
||||
comfort.approves.find((item) => item.step === 2) |
||||
" |
||||
> |
||||
<icon |
||||
name="local-icon-return" |
||||
:size="41" |
||||
color="#FF0606" |
||||
v-if=" |
||||
comfort.approves.find( |
||||
(item) => item.step === 2 |
||||
).returnFlag |
||||
" |
||||
/> |
||||
<icon |
||||
name="el-icon-CircleCheck" |
||||
:size="41" |
||||
color="var(--primary-color)" |
||||
v-else |
||||
/> |
||||
</template> |
||||
<div class="icon" v-else></div> |
||||
</div> |
||||
<h1 class="text-center mb-16"> |
||||
<span>待审批</span> |
||||
</h1> |
||||
<h2 class="text-center mb-20">市局 维权专干</h2> |
||||
<div style="padding: 8px"> |
||||
<h3>{{}}</h3> |
||||
<p style="font-weight: 700">{{}}</p> |
||||
<h4 class="text-right">{{}}</h4> |
||||
</div> |
||||
</div> |
||||
</div> |
||||
</el-scrollbar> |
||||
<div style="min-height: 40px"> |
||||
<footer class="flex end mt-20" v-if="!disabled"> |
||||
<el-button size="large" type="danger" @click="handleReturn" |
||||
>退回</el-button |
||||
> |
||||
<el-button type="primary" size="large" @click="handleApprove" |
||||
>审批通过</el-button |
||||
> |
||||
</footer> |
||||
</div> |
||||
</el-dialog> |
||||
|
||||
<el-dialog |
||||
:title="formData.returnFlag ? '抚慰退回' : `抚慰审批`" |
||||
v-model="approveShow" |
||||
> |
||||
<el-form |
||||
label-position="top" |
||||
ref="formRef" |
||||
:model="form" |
||||
style="height: 400px" |
||||
> |
||||
<el-form-item |
||||
prop="comments" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请输入', |
||||
trigger: ['blur', 'change'], |
||||
}" |
||||
> |
||||
<template #label> |
||||
<h3 class="inline-block mb-10"> |
||||
{{ formData.returnFlag ? "退回意见" : `审批意见` }} |
||||
</h3> |
||||
</template> |
||||
<el-input |
||||
type="textarea" |
||||
placeholder="请输入" |
||||
v-model="formData.comments" |
||||
:autosize="{ minRows: 5 }" |
||||
/> |
||||
</el-form-item> |
||||
</el-form> |
||||
<footer class="flex end"> |
||||
<el-button type="primary" size="large" @click="submit" |
||||
>提交</el-button |
||||
> |
||||
</footer> |
||||
</el-dialog> |
||||
</template> |
||||
<script setup> |
||||
import { getDetail, comfortApprove } from "@/api/rightsComfort/comfort"; |
||||
import feedback from "@/utils/feedback"; |
||||
|
||||
const comfort = ref({ |
||||
apply: {}, |
||||
applyPerson: {}, |
||||
person: {}, |
||||
approves: [], |
||||
}); |
||||
|
||||
const props = defineProps({ |
||||
show: { |
||||
type: Boolean, |
||||
default: false, |
||||
}, |
||||
id: { |
||||
type: String, |
||||
}, |
||||
disabled: { |
||||
type: Boolean, |
||||
default: true, |
||||
}, |
||||
}); |
||||
|
||||
const emit = defineEmits(["update", "update:show"]); |
||||
|
||||
const dialogShow = ref(false); |
||||
|
||||
watch( |
||||
() => props.show, |
||||
(val) => { |
||||
dialogShow.value = val; |
||||
} |
||||
); |
||||
|
||||
watch(dialogShow, (val) => { |
||||
emit("update:show", val); |
||||
}); |
||||
|
||||
watch( |
||||
() => props.id, |
||||
(val) => { |
||||
getDetail(val).then((data) => { |
||||
comfort.value = data; |
||||
}); |
||||
} |
||||
); |
||||
|
||||
const approveShow = ref(false); |
||||
const formData = ref({}); |
||||
const formRef = ref(); |
||||
function handleReturn() { |
||||
approveShow.value = true; |
||||
formData.value.returnFlag = true; |
||||
} |
||||
function handleApprove() { |
||||
approveShow.value = true; |
||||
formData.value.returnFlag = false; |
||||
} |
||||
|
||||
async function submit() { |
||||
await formRef.value.validate(); |
||||
await comfortApprove({ |
||||
rpcId: props.id, |
||||
returnFlag: formData.value.returnFlag, |
||||
comments: formData.value.comments, |
||||
}); |
||||
approveShow.value = false |
||||
formData.value = {}; |
||||
feedback.msgSuccess("操作成功"); |
||||
dialogShow.value = false |
||||
emit("update"); |
||||
} |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
.item { |
||||
width: 100%; |
||||
padding: 8px; |
||||
--base-color: #999; |
||||
--second-color: #d8d8d8; |
||||
.comments-header { |
||||
&::before { |
||||
display: block; |
||||
content: ""; |
||||
position: absolute; |
||||
top: 50%; |
||||
right: calc(50% + 30px); |
||||
width: calc(100% - 30px); |
||||
border-top: 2px solid var(--second-color); |
||||
} |
||||
} |
||||
&:first-child .comments-header::before { |
||||
display: none; |
||||
} |
||||
&[approved="true"] { |
||||
--base-color: var(--primary-color); |
||||
--second-color: #8595fb; |
||||
} |
||||
h1 { |
||||
color: var(--base-color); |
||||
font-size: 18px; |
||||
font-weight: 700; |
||||
} |
||||
h2 { |
||||
font-size: 16px; |
||||
font-weight: 500; |
||||
} |
||||
h3 { |
||||
font-size: 14px; |
||||
color: #666; |
||||
font-weight: 500; |
||||
margin-bottom: 8px; |
||||
margin-top: 0; |
||||
} |
||||
h4 { |
||||
font-size: 12px; |
||||
color: #666; |
||||
font-weight: 500; |
||||
} |
||||
p { |
||||
color: #333; |
||||
} |
||||
div[danger="true"] { |
||||
background-color: #feeded; |
||||
} |
||||
.icon { |
||||
width: 22px; |
||||
height: 22px; |
||||
border: 3px solid #e0e0e0; |
||||
border-radius: 50%; |
||||
margin: 6.5px; |
||||
} |
||||
} |
||||
</style> |
||||
@ -0,0 +1,170 @@
|
||||
<template> |
||||
<div class="container"> |
||||
<header class="mb-20"> |
||||
<el-form :label-width="114"> |
||||
<el-row> |
||||
<el-col :span="6"> |
||||
<el-form-item label="申请时间"> |
||||
<date-time-range-picker-ext |
||||
v-model="query.applyDate" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="事发时间"> |
||||
<date-time-range-picker-ext |
||||
v-model="query.happenTime" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="姓名"> |
||||
<el-input |
||||
placeholder="请输入姓名" |
||||
v-model="query.applicantEmpName" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="申请人单位"> |
||||
<depart-tree-select v-model="query.departId" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
</el-form> |
||||
<div class="flex end"> |
||||
<div> |
||||
<el-button type="primary" @click="getList"> |
||||
<template #icon> |
||||
<icon name="el-icon-Search" /> |
||||
</template> |
||||
查询</el-button |
||||
> |
||||
<el-button @click="reset">重置</el-button> |
||||
</div> |
||||
</div> |
||||
</header> |
||||
<div class="table-container"> |
||||
<el-table :data="list"> |
||||
<el-table-column |
||||
label="抚慰编号" |
||||
prop="number" |
||||
show-overflow-tooltip |
||||
/> |
||||
<el-table-column |
||||
label="申请时间" |
||||
prop="applyDate" |
||||
width="160" |
||||
/> |
||||
<el-table-column |
||||
label="事发时间" |
||||
prop="happenTime" |
||||
width="160" |
||||
/> |
||||
<el-table-column |
||||
label="申请人姓名" |
||||
prop="applicantEmpName" |
||||
width="100" |
||||
/> |
||||
<el-table-column label="申请人单位" prop="departName" /> |
||||
<el-table-column label="开户行"> |
||||
<template #default="{ row }"> |
||||
<span>{{ row.bankCard }}</span> |
||||
<span>{{ row.bankBranch }}</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="状态" width="100"> |
||||
<template #default="{ row }"> |
||||
<el-tag type="primary">{{ |
||||
getDictLable(dict.comfortStatus, row.rpcStatus) |
||||
}}</el-tag> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" width="200"> |
||||
<template #default="{ row }"> |
||||
<el-button link type="primary" @click="handleShow(row)" |
||||
>查看</el-button |
||||
> |
||||
<el-button link type="danger" @click="handleDelete(row)" |
||||
>删除</el-button |
||||
> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</div> |
||||
<div class="flex end mt-8"> |
||||
<el-pagination |
||||
@size-change="getList" |
||||
@current-change="getList" |
||||
:page-sizes="[10, 20, 50]" |
||||
v-model:page-size="query.size" |
||||
v-model:current-page="query.current" |
||||
layout="total, sizes, prev, pager, next" |
||||
:total="total" |
||||
> |
||||
</el-pagination> |
||||
</div> |
||||
</div> |
||||
|
||||
<comfort-dialog v-model:show="actionShow" :id="activeRpcId" /> |
||||
</template> |
||||
<script setup> |
||||
import moment from "moment"; |
||||
import { listComfort, delComfort } from "@/api/rightsComfort/comfort"; |
||||
import { listPolice } from "@/api/system/police"; |
||||
import { getDictLable } from "@/utils/util"; |
||||
import feedback from "@/utils/feedback"; |
||||
|
||||
import useCatchStore from "@/stores/modules/catch"; |
||||
|
||||
const catchStore = useCatchStore(); |
||||
const dict = catchStore.getDicts([ |
||||
"formsOfTort", |
||||
"injurySeverity", |
||||
"incidentLink", |
||||
"comfortStatus", |
||||
]); |
||||
|
||||
const list = ref([]); |
||||
const query = ref({ |
||||
current: 1, |
||||
size: 10, |
||||
}); |
||||
const total = ref(0); |
||||
function getList() { |
||||
listComfort(query.value).then((data) => { |
||||
list.value = data.records; |
||||
total.value = data.total; |
||||
}); |
||||
} |
||||
|
||||
function reset() { |
||||
query.value = { |
||||
current: 1, |
||||
size: 10, |
||||
}; |
||||
getList(); |
||||
} |
||||
|
||||
getList(); |
||||
|
||||
const actionShow = ref(false); |
||||
const activeRpcId = ref(false); |
||||
|
||||
function handleShow(row) { |
||||
actionShow.value = true; |
||||
activeRpcId.value = row.rpcId; |
||||
} |
||||
|
||||
const handleDelete = async (row) => { |
||||
await feedback.confirm(`确定要删除 ${row.number}?`); |
||||
await delComfort(row.rpcId); |
||||
feedback.msgSuccess("删除成功"); |
||||
getList(); |
||||
}; |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
h5 { |
||||
margin: 10px 0; |
||||
} |
||||
</style> |
||||
@ -0,0 +1,891 @@
|
||||
<template> |
||||
<div class="container"> |
||||
<header class="mb-20"> |
||||
<el-form :label-width="114"> |
||||
<el-row> |
||||
<el-col :span="6"> |
||||
<el-form-item label="申请时间"> |
||||
<date-time-range-picker-ext |
||||
v-model="query.applyDate" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="事发时间"> |
||||
<date-time-range-picker-ext |
||||
v-model="query.happenTime" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="姓名"> |
||||
<el-input |
||||
placeholder="请输入姓名" |
||||
v-model="query.applicantEmpName" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="申请人单位"> |
||||
<depart-tree-select v-model="query.departId" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
</el-form> |
||||
<div class="flex between"> |
||||
<el-button type="primary" @click="handleShowAdd"> |
||||
<template #icon> |
||||
<icon name="el-icon-Plus" /> |
||||
</template> |
||||
申请抚慰</el-button |
||||
> |
||||
<div> |
||||
<el-button type="primary" @click="search"> |
||||
<template #icon> |
||||
<icon name="el-icon-Search" /> |
||||
</template> |
||||
查询</el-button |
||||
> |
||||
<el-button @click="reset">重置</el-button> |
||||
</div> |
||||
</div> |
||||
</header> |
||||
<el-tabs> |
||||
<el-tab-pane label="我的待办"> |
||||
<div class="table-container"> |
||||
<el-table :data="todos"> |
||||
<el-table-column |
||||
label="抚慰编号" |
||||
prop="number" |
||||
show-overflow-tooltip |
||||
/> |
||||
<el-table-column |
||||
label="申请时间" |
||||
prop="applyDate" |
||||
width="160" |
||||
/> |
||||
<el-table-column |
||||
label="事发时间" |
||||
prop="happenTime" |
||||
width="160" |
||||
/> |
||||
<el-table-column |
||||
label="申请人姓名" |
||||
prop="applicantEmpName" |
||||
width="100" |
||||
/> |
||||
<el-table-column label="申请人单位" prop="departName" /> |
||||
<el-table-column label="开户行"> |
||||
<template #default="{ row }"> |
||||
<span>{{ row.bankCard }}</span> |
||||
<span>{{ row.bankBranch }}</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="状态" width="100"> |
||||
<template #default="{ row }"> |
||||
<el-tag type="primary" v-if="row.rpcStatus">{{ |
||||
getDictLable( |
||||
dict.comfortStatus, |
||||
row.rpcStatus |
||||
) |
||||
}}</el-tag> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" width="200"> |
||||
<template #default="{ row }"> |
||||
<el-button |
||||
link |
||||
type="primary" |
||||
@click="handleShow(row, false)" |
||||
>立即处理</el-button |
||||
> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</div> |
||||
<div class="flex end mt-8"> |
||||
<el-pagination |
||||
@size-change="getTodos" |
||||
@current-change="getTodos" |
||||
:page-sizes="[10, 20, 50]" |
||||
v-model:page-size="todoPage.size" |
||||
v-model:current-page="todoPage.current" |
||||
layout="total, sizes, prev, pager, next" |
||||
:total="todoPage.total" |
||||
> |
||||
</el-pagination> |
||||
</div> |
||||
</el-tab-pane> |
||||
<el-tab-pane label="我的已办"> |
||||
<div class="table-container"> |
||||
<el-table :data="dones"> |
||||
<el-table-column |
||||
label="抚慰编号" |
||||
prop="number" |
||||
show-overflow-tooltip |
||||
/> |
||||
<el-table-column |
||||
label="申请时间" |
||||
prop="applyDate" |
||||
width="160" |
||||
/> |
||||
<el-table-column |
||||
label="事发时间" |
||||
prop="happenTime" |
||||
width="160" |
||||
/> |
||||
<el-table-column |
||||
label="申请人姓名" |
||||
prop="applicantEmpName" |
||||
width="100" |
||||
/> |
||||
<el-table-column label="申请人单位" prop="departName" /> |
||||
<el-table-column label="当前审批人" prop="approver"> |
||||
</el-table-column> |
||||
<el-table-column label="状态" width="100"> |
||||
<template #default="{ row }"> |
||||
<el-tag type="primary">{{ |
||||
getDictLable( |
||||
dict.comfortStatus, |
||||
row.rpcStatus |
||||
) |
||||
}}</el-tag> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" width="200"> |
||||
<template #default="{ row }"> |
||||
<el-button link type="primary" @click="handleShow(row, true)">查看</el-button> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</div> |
||||
<div class="flex end mt-8"> |
||||
<el-pagination |
||||
@size-change="getDones" |
||||
@current-change="getDones" |
||||
:page-sizes="[10, 20, 50]" |
||||
v-model:page-size="donePage.size" |
||||
v-model:current-page="donePage.current" |
||||
layout="total, sizes, prev, pager, next" |
||||
:total="donePage.total" |
||||
> |
||||
</el-pagination> |
||||
</div> |
||||
</el-tab-pane> |
||||
</el-tabs> |
||||
</div> |
||||
|
||||
<el-dialog |
||||
title="申请抚慰" |
||||
v-model="show" |
||||
width="60vw" |
||||
top="2vh" |
||||
style="margin-bottom: 0" |
||||
> |
||||
<el-scrollbar max-height="calc(96vh - 130px)"> |
||||
<el-form :label-width="140" ref="formRef" :model="formData"> |
||||
<h5>办理信息</h5> |
||||
<el-row> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="申请时间" |
||||
:rules="{ |
||||
required: true, |
||||
trigger: ['blur'], |
||||
}" |
||||
prop="" |
||||
> |
||||
<el-date-picker |
||||
v-model="formData.applyDate" |
||||
type="date" |
||||
placeholder="请选择" |
||||
value-format="YYYY-MM-DD" |
||||
style="width: 300px" |
||||
:disabled-date="disabledDate" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="主办单位" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择', |
||||
}" |
||||
prop="handleDepartId" |
||||
> |
||||
<div style="width: 300px"> |
||||
<depart-tree-select |
||||
v-model="formData.handleDepartId" |
||||
:check-strictly="true" |
||||
@node-click=" |
||||
(node) => |
||||
(formData.handleDepartName = |
||||
node.shortName) |
||||
" |
||||
/> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-divider /> |
||||
<el-row> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="是否为本人申请" |
||||
:rules="{ |
||||
required: true, |
||||
trigger: ['blur'], |
||||
}" |
||||
prop="" |
||||
> |
||||
<el-radio-group v-model="formData.isSelf"> |
||||
<el-radio :value="1">是</el-radio> |
||||
<el-radio :value="0">否</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12" v-if="formData.isSelf === 0"> |
||||
<el-form-item |
||||
label="关系" |
||||
:rules="{ |
||||
required: true, |
||||
trigger: ['blur'], |
||||
message: '请选择', |
||||
}" |
||||
prop="relation" |
||||
> |
||||
<el-radio-group v-model="formData.relation"> |
||||
<el-radio :value="1">同事</el-radio> |
||||
<el-radio :value="2">亲属</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12" v-if="formData.isSelf === 0"> |
||||
<el-form-item |
||||
label="代理人姓名" |
||||
:rules="{ |
||||
required: true, |
||||
trigger: ['blur'], |
||||
}" |
||||
prop="" |
||||
> |
||||
<el-input |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12" v-if="formData.isSelf === 0"> |
||||
<el-form-item |
||||
label="代理人单位" |
||||
:rules="{ |
||||
required: true, |
||||
trigger: ['blur'], |
||||
}" |
||||
prop="" |
||||
> |
||||
<div style="width: 300px"> |
||||
<depart-tree-select |
||||
v-model="formData.handleDepartId" |
||||
:check-strictly="true" |
||||
@node-click=" |
||||
(node) => |
||||
(formData.handleDepartName = |
||||
node.shortName) |
||||
" |
||||
/> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<h5>申请人信息</h5> |
||||
<el-row> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="申请人姓名" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请输入', |
||||
}" |
||||
prop="applicantEmpName" |
||||
> |
||||
<el-autocomplete |
||||
v-model="formData.applicantEmpName" |
||||
:fetch-suggestions="querySearch" |
||||
:trigger-on-focus="false" |
||||
value-key="name" |
||||
clearable |
||||
placeholder="请输入姓名搜索" |
||||
@select="handleSelect" |
||||
style="width: 300px" |
||||
> |
||||
<template #default="{ item }"> |
||||
<span class="mr-10">{{ item.name }}</span> |
||||
<span class="text-primary">{{ |
||||
item.empNo |
||||
}}</span> |
||||
</template> |
||||
</el-autocomplete> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="性别" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择性别', |
||||
}" |
||||
prop="sex" |
||||
> |
||||
<el-radio-group v-model="formData.sex"> |
||||
<el-radio :value="0">男</el-radio> |
||||
<el-radio :value="1">女</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="出生年月" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择出生年月', |
||||
}" |
||||
prop="birthday" |
||||
> |
||||
<el-date-picker |
||||
v-model="formData.birthday" |
||||
type="date" |
||||
placeholder="请选择" |
||||
value-format="YYYY-MM-DD" |
||||
style="width: 300px" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="文化程度" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择', |
||||
}" |
||||
prop="levelEducation" |
||||
> |
||||
<el-select |
||||
clearable |
||||
style="width: 300px" |
||||
v-model="formData.levelEducation" |
||||
> |
||||
<el-option value="高中">高中</el-option> |
||||
<el-option value="大专">大专</el-option> |
||||
<el-option value="本科">本科</el-option> |
||||
<el-option value="研究生及以上" |
||||
>研究生及以上</el-option |
||||
> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="政治面貌" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择', |
||||
}" |
||||
prop="politicCountenance" |
||||
> |
||||
<el-select |
||||
clearable |
||||
style="width: 300px" |
||||
v-model="formData.politicCountenance" |
||||
> |
||||
<el-option value="群众">群众</el-option> |
||||
<el-option value="团员">团员</el-option> |
||||
<el-option value="预备党员">预备党员</el-option> |
||||
<el-option value="党员">党员</el-option> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="身份证号码" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请输入', |
||||
}" |
||||
prop="idCode" |
||||
> |
||||
<el-input |
||||
v-model="formData.idCode" |
||||
clearable |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="联系电话" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请输入', |
||||
}" |
||||
prop="mobile" |
||||
> |
||||
<el-input |
||||
v-model="formData.mobile" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="单位" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择', |
||||
}" |
||||
prop="departId" |
||||
> |
||||
<div style="width: 300px"> |
||||
<depart-tree-select |
||||
v-model="formData.departId" |
||||
:check-strictly="true" |
||||
@node-click=" |
||||
(node) => |
||||
(formData.departName = |
||||
node.shortName) |
||||
" |
||||
/> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="职务" prop="job"> |
||||
<el-input |
||||
v-model="formData.job" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="警号" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请输入', |
||||
}" |
||||
prop="empNo" |
||||
> |
||||
<el-input |
||||
v-model="formData.empNo" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="警衔" prop="policeRank"> |
||||
<el-input |
||||
v-model="formData.policeRank" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="开户行" prop="bankCard"> |
||||
<el-input |
||||
v-model="formData.bankCard" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="所属支行" prop="bankBranch"> |
||||
<el-input |
||||
v-model="formData.bankBranch" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="银行账号" prop="bankCardAccount"> |
||||
<el-input |
||||
v-model="formData.bankCardAccount" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-divider /> |
||||
<h5>案发情况</h5> |
||||
<el-row> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="事发时间" |
||||
prop="happenTime" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择', |
||||
}" |
||||
> |
||||
<el-date-picker |
||||
v-model="formData.happenTime" |
||||
type="datetime" |
||||
placeholder="请选择" |
||||
value-format="YYYY-MM-DD HH:mm" |
||||
time-format="HH:mm" |
||||
style="width: 300px" |
||||
:disabled-date="disabledDate" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="24"> |
||||
<el-form-item |
||||
label="事实及理由" |
||||
prop="factReason" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请输入', |
||||
}" |
||||
> |
||||
<el-input |
||||
v-model="formData.factReason" |
||||
type="textarea" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="案发环节" |
||||
prop="incidentLink" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择', |
||||
}" |
||||
> |
||||
<el-select |
||||
v-model="formData.incidentLink" |
||||
style="width: 300px" |
||||
clearable |
||||
@change=" |
||||
(val) => |
||||
(formData.incidentLinkName = |
||||
dict.incidentLink.find( |
||||
(item) => item.dictValue === val |
||||
)?.dictLabel) |
||||
" |
||||
> |
||||
<el-option |
||||
v-for="item in dict.incidentLink" |
||||
:key="item.id" |
||||
:label="item.dictLabel" |
||||
:value="item.dictValue" |
||||
/> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="受伤程度" |
||||
prop="injurySeverity" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择', |
||||
}" |
||||
> |
||||
<el-select |
||||
v-model="formData.injurySeverity" |
||||
style="width: 300px" |
||||
clearable |
||||
@change=" |
||||
(val) => |
||||
(formData.injurySeverityName = |
||||
dict.injurySeverity.find( |
||||
(item) => item.dictValue === val |
||||
)?.dictLabel) |
||||
" |
||||
> |
||||
<el-option |
||||
v-for="item in dict.injurySeverity" |
||||
:key="item.id" |
||||
:label="item.dictLabel" |
||||
:value="item.dictValue" |
||||
/> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="侵权形式" |
||||
prop="formsOfTort" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择', |
||||
}" |
||||
> |
||||
<el-select |
||||
v-model="formData.formsOfTort" |
||||
style="width: 300px" |
||||
clearable |
||||
@change=" |
||||
(val) => |
||||
(formData.formsOfTortName = |
||||
dict.formsOfTort.find( |
||||
(item) => item.dictValue === val |
||||
)?.dictLabel) |
||||
" |
||||
> |
||||
<el-option |
||||
v-for="item in dict.formsOfTort" |
||||
:key="item.id" |
||||
:label="item.dictLabel" |
||||
:value="item.dictValue" |
||||
/> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="办案单位" |
||||
prop="" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择', |
||||
}" |
||||
> |
||||
<div style="width: 300px"> |
||||
<depart-tree-select :check-strictly="true" /> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="侵权人姓名" |
||||
prop="infringerName" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请输入', |
||||
}" |
||||
> |
||||
<el-input |
||||
v-model="formData.infringerName" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="处理方式" |
||||
prop="infringerHandle" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请输入', |
||||
}" |
||||
> |
||||
<el-input |
||||
v-model="formData.infringerHandle" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-divider /> |
||||
<h5>佐证材料</h5> |
||||
<el-row> |
||||
<el-col :span="12"> |
||||
<el-form-item label="附件" prop="documentFile"> |
||||
<file-upload v-model:files="formData.documentFile" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-divider /> |
||||
<h5>呈报审批</h5> |
||||
<el-row> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="审批人" |
||||
:rules="{ |
||||
required: true, |
||||
message: |
||||
'未选择主办单位或当前主办单位的未配置维权专干(请联系系统管理员)', |
||||
}" |
||||
prop="approverEmpNo" |
||||
> |
||||
<el-input disabled v-model="formData.approver" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
</el-form> |
||||
</el-scrollbar> |
||||
<footer class="flex end"> |
||||
<el-button @click="show = false" size="large">取消</el-button> |
||||
<el-button type="primary" @click="submit" size="large" |
||||
>确定</el-button |
||||
> |
||||
</footer> |
||||
</el-dialog> |
||||
|
||||
<comfort-dialog v-model:show="actionShow" :id="activeRpcId" :disabled="dialogDisabled" /> |
||||
</template> |
||||
<script setup> |
||||
import moment from "moment"; |
||||
import { listTodos, listDone, applyComfort } from "@/api/rightsComfort/comfort"; |
||||
import { listPolice } from "@/api/system/police"; |
||||
import { listRightPersonByDepartId } from "@/api/system/rightPerson"; |
||||
import { getDictLable } from "@/utils/util"; |
||||
import feedback from "@/utils/feedback"; |
||||
|
||||
import useCatchStore from "@/stores/modules/catch"; |
||||
import { onMounted } from "vue"; |
||||
|
||||
const catchStore = useCatchStore(); |
||||
const dict = catchStore.getDicts([ |
||||
"formsOfTort", |
||||
"injurySeverity", |
||||
"incidentLink", |
||||
"comfortStatus", |
||||
]); |
||||
|
||||
const query = ref({ |
||||
|
||||
}); |
||||
|
||||
const todos = ref([]); |
||||
const todoPage = reactive({ |
||||
total: 0, |
||||
current: 1, |
||||
size: 10, |
||||
}); |
||||
|
||||
const dones = ref([]) |
||||
const donePage = reactive({ |
||||
total: 0, |
||||
current: 1, |
||||
size: 10, |
||||
}); |
||||
|
||||
function getTodos() { |
||||
const queryParam = {...query.value} |
||||
queryParam.current = todoPage.current |
||||
queryParam.size = todoPage.size |
||||
listTodos(queryParam).then((data) => { |
||||
todos.value = data.records; |
||||
todoPage.total = data.total; |
||||
}); |
||||
} |
||||
|
||||
function getDones() { |
||||
const queryParam = {...query.value} |
||||
queryParam.current = donePage.current |
||||
queryParam.size = donePage.size |
||||
listDone(queryParam).then((data) => { |
||||
dones.value = data.records; |
||||
donePage.total = data.total; |
||||
}); |
||||
} |
||||
|
||||
function reset() { |
||||
query.value = { |
||||
current: 1, |
||||
size: 10, |
||||
}; |
||||
getTodos(); |
||||
getDones() |
||||
} |
||||
|
||||
function search() { |
||||
getTodos() |
||||
getDones() |
||||
} |
||||
|
||||
onMounted(() => { |
||||
getTodos(); |
||||
getDones() |
||||
}) |
||||
|
||||
const show = ref(false); |
||||
const formData = ref({ |
||||
applyDate: moment().format("YYYY-MM-DD"), |
||||
}); |
||||
const formRef = ref(null); |
||||
|
||||
function submit() { |
||||
formRef.value.validate((flag) => { |
||||
if (flag) { |
||||
applyComfort(formData.value).then(() => { |
||||
feedback.msgSuccess("操作成功"); |
||||
show.value = false; |
||||
formData.value = { |
||||
applyDate: moment().format("YYYY-MM-DD"), |
||||
}; |
||||
getDones() |
||||
}); |
||||
} |
||||
}); |
||||
} |
||||
|
||||
function handleShowAdd() { |
||||
show.value = true; |
||||
} |
||||
|
||||
async function querySearch(queryString, cb) { |
||||
if (!queryString) { |
||||
cb([]); |
||||
} |
||||
const data = await listPolice({ |
||||
size: 20, |
||||
current: 1, |
||||
name: queryString, |
||||
}); |
||||
cb(data.records); |
||||
} |
||||
|
||||
function handleSelect(item) { |
||||
formData.value.empNo = item.empNo; |
||||
formData.value.idCode = item.idCode; |
||||
formData.value.mobile = item.mobile; |
||||
} |
||||
|
||||
watch( |
||||
() => formData.value.handleDepartId, |
||||
(val) => { |
||||
listRightPersonByDepartId(val).then((data) => { |
||||
if (data.length) { |
||||
formData.value.approverEmpNo = data.map(item => item.empNo) |
||||
formData.value.approver = data.map(item => item.empName).join('、') |
||||
} else { |
||||
delete formData.value.approverEmpNo; |
||||
delete formData.value.approver; |
||||
} |
||||
}); |
||||
} |
||||
); |
||||
|
||||
const actionShow = ref(false); |
||||
const activeRpcId = ref(false) |
||||
const dialogDisabled = ref(true) |
||||
function handleShow(row, disabled) { |
||||
actionShow.value = true |
||||
activeRpcId.value = row.rpcId |
||||
dialogDisabled.value = disabled |
||||
} |
||||
|
||||
</script> |
||||
<style lang="scss" scoped> |
||||
h5 { |
||||
margin: 10px 0; |
||||
} |
||||
|
||||
|
||||
</style> |
||||
@ -0,0 +1,167 @@
|
||||
<template> |
||||
<div class="container"> |
||||
<header class="mb-20"> |
||||
<el-form :label-width="114"> |
||||
<el-row> |
||||
<el-col :span="6"> |
||||
<el-form-item label="申请时间"> |
||||
<date-time-range-picker-ext |
||||
v-model="query.applyDate" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="事发时间"> |
||||
<date-time-range-picker-ext |
||||
v-model="query.happenTime" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="姓名"> |
||||
<el-input |
||||
placeholder="请输入姓名" |
||||
v-model="query.applicantEmpName" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="申请人单位"> |
||||
<depart-tree-select v-model="query.departId" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
</el-form> |
||||
<div class="flex end"> |
||||
<div> |
||||
<el-button type="primary" @click="getList"> |
||||
<template #icon> |
||||
<icon name="el-icon-Search" /> |
||||
</template> |
||||
查询</el-button |
||||
> |
||||
<el-button @click="reset">重置</el-button> |
||||
</div> |
||||
</div> |
||||
</header> |
||||
<div class="table-container"> |
||||
<el-table :data="list"> |
||||
<el-table-column |
||||
label="维权编号" |
||||
prop="number" |
||||
show-overflow-tooltip |
||||
/> |
||||
<el-table-column |
||||
label="申请时间" |
||||
prop="applyDate" |
||||
width="160" |
||||
/> |
||||
<el-table-column |
||||
label="事发时间" |
||||
prop="happenTime" |
||||
width="160" |
||||
/> |
||||
<el-table-column |
||||
label="申请人姓名" |
||||
prop="applicantEmpName" |
||||
width="100" |
||||
/> |
||||
<el-table-column label="申请人单位" prop="departName" /> |
||||
<el-table-column label="状态" width="100"> |
||||
<template #default="{ row }"> |
||||
|
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" width="200"> |
||||
<template #default="{ row }"> |
||||
<el-button |
||||
link |
||||
type="primary" |
||||
@click="handleShow(row)" |
||||
>查看</el-button |
||||
> |
||||
<el-button |
||||
link |
||||
type="danger" |
||||
@click="handleShow(row)" |
||||
>删除</el-button |
||||
> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</div> |
||||
<div class="flex end mt-8"> |
||||
<el-pagination |
||||
@size-change="getList" |
||||
@current-change="getList" |
||||
:page-sizes="[10, 20, 50]" |
||||
v-model:page-size="query.size" |
||||
v-model:current-page="query.current" |
||||
layout="total, sizes, prev, pager, next" |
||||
:total="total" |
||||
> |
||||
</el-pagination> |
||||
</div> |
||||
</div> |
||||
|
||||
</template> |
||||
<script setup> |
||||
import moment from "moment"; |
||||
import { listRights } from "@/api/rightsComfort/rights"; |
||||
import { listPolice } from "@/api/system/police"; |
||||
import { getDictLable } from "@/utils/util"; |
||||
import feedback from "@/utils/feedback"; |
||||
|
||||
import useCatchStore from "@/stores/modules/catch"; |
||||
|
||||
const catchStore = useCatchStore(); |
||||
const dict = catchStore.getDicts([ |
||||
"formsOfTort", |
||||
"injurySeverity", |
||||
"incidentLink", |
||||
"comfortStatus" |
||||
]); |
||||
|
||||
const list = ref([]); |
||||
const query = ref({ |
||||
current: 1, |
||||
size: 10, |
||||
}); |
||||
const total = ref(0); |
||||
function getList() { |
||||
listRights(query.value).then((data) => { |
||||
list.value = data.records; |
||||
total.value = data.total; |
||||
}); |
||||
} |
||||
|
||||
function reset() { |
||||
query.value = { |
||||
current: 1, |
||||
size: 10, |
||||
}; |
||||
getList(); |
||||
} |
||||
|
||||
getList(); |
||||
|
||||
const actionShow = ref(false); |
||||
const activeRpcId = ref(false) |
||||
|
||||
function handleShow(row) { |
||||
actionShow.value = true |
||||
activeRpcId.value = row.rpcId |
||||
} |
||||
|
||||
const handleDelete = async (row) => { |
||||
await feedback.confirm(`确定要删除 ${row.number}?`); |
||||
// await delComfort(row.rpcId); |
||||
feedback.msgSuccess("删除成功"); |
||||
getList(); |
||||
}; |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
h5 { |
||||
margin: 10px 0; |
||||
} |
||||
</style> |
||||
@ -0,0 +1,14 @@
|
||||
<template> |
||||
<iframe :src="`${BASE_PATH}/templates/长沙市公安局数字督察一体化平台-操作手册V1.pdf`"></iframe> |
||||
</template> |
||||
<script setup> |
||||
import { BASE_PATH } from "@/api/request"; |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
iframe { |
||||
width: 100%; |
||||
height: 100vh; |
||||
display: block; |
||||
border: none; |
||||
} |
||||
</style> |
||||
@ -0,0 +1,265 @@
|
||||
<template> |
||||
<div class="container"> |
||||
<header class="mb-20"> |
||||
<el-form :label-width="114"> |
||||
<el-row> |
||||
<el-col :span="6"> |
||||
<el-form-item label="所属单位"> |
||||
<depart-tree-select v-model="query.departId" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="警员姓名"> |
||||
<el-input |
||||
placeholder="请输入警员姓名" |
||||
v-model="query.empName" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="警号"> |
||||
<el-input |
||||
placeholder="请输入警号" |
||||
v-model="query.empNo" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
</el-form> |
||||
<div class="flex between"> |
||||
<el-button type="primary" @click="handleShowAdd"> |
||||
<template #icon> |
||||
<icon name="el-icon-Plus" /> |
||||
</template> |
||||
新增维权专干</el-button |
||||
> |
||||
<div> |
||||
<el-button type="primary" @click="getList"> |
||||
<template #icon> |
||||
<icon name="el-icon-Search" /> |
||||
</template> |
||||
查询</el-button |
||||
> |
||||
<el-button @click="reset">重置</el-button> |
||||
</div> |
||||
</div> |
||||
</header> |
||||
<div class="table-container"> |
||||
<el-table :data="list"> |
||||
<el-table-column label="所属单位" prop="departName"> |
||||
<template #default="{ row }"> |
||||
<span v-if="row.council === '1'">长沙市公安局</span> |
||||
<span v-else>{{ row.departName }}</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="警员姓名" prop="empName" width="200" /> |
||||
<el-table-column label="警号" prop="empNo" width="200" /> |
||||
<el-table-column |
||||
label="市局维权专干" |
||||
align="center" |
||||
width="180" |
||||
> |
||||
<template #default="{ row }"> |
||||
<span v-if="row.council === '1'">是</span> |
||||
<span v-else>否</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" width="300"> |
||||
<template #default="{ row }"> |
||||
<el-button |
||||
type="primary" |
||||
link |
||||
@click="handleEdit(row)" |
||||
v-perms="['user:edit']" |
||||
>编辑</el-button |
||||
> |
||||
<el-button |
||||
type="danger" |
||||
link |
||||
@click="handleDelete(row)" |
||||
v-perms="['user:del']" |
||||
>删除</el-button |
||||
> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</div> |
||||
<div class="flex end mt-8"> |
||||
<el-pagination |
||||
@size-change="getList" |
||||
@current-change="getList" |
||||
:page-sizes="[10, 20, 50]" |
||||
v-model:page-size="query.size" |
||||
v-model:current-page="query.current" |
||||
layout="total, sizes, prev, pager, next" |
||||
:total="total" |
||||
> |
||||
</el-pagination> |
||||
</div> |
||||
</div> |
||||
|
||||
<el-dialog |
||||
:title="mode === 'add' ? '新增维权专干' : '编辑维权专干'" |
||||
v-model="show" |
||||
width="600" |
||||
> |
||||
<el-form :label-width="120" ref="formRef" :model="formData"> |
||||
<el-form-item |
||||
label="市局维权专干" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择', |
||||
}" |
||||
prop="council" |
||||
> |
||||
<el-radio-group v-model="formData.council"> |
||||
<el-radio value="1">是</el-radio> |
||||
<el-radio value="0">否</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
<el-form-item |
||||
label="单位" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择', |
||||
}" |
||||
prop="departId" |
||||
v-if="formData.council === '0'" |
||||
> |
||||
<depart-tree-select v-model="formData.departId" @node-click="(node) => formData.departName = node.shortName" /> |
||||
</el-form-item> |
||||
<el-form-item |
||||
label="警员" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择警员', |
||||
}" |
||||
prop="empName" |
||||
> |
||||
<el-autocomplete |
||||
v-model="formData.empName" |
||||
:fetch-suggestions="querySearch" |
||||
:trigger-on-focus="false" |
||||
value-key="name" |
||||
clearable |
||||
placeholder="请输入警号搜索" |
||||
@select="handleSelect" |
||||
> |
||||
<template #default="{ item }"> |
||||
<span class="mr-10">{{ item.name }}</span> |
||||
<span class="text-primary">{{ item.empNo }}</span> |
||||
</template> |
||||
</el-autocomplete> |
||||
</el-form-item> |
||||
</el-form> |
||||
<footer class="flex end mt-60"> |
||||
<el-button @click="show = false" size="large">取消</el-button> |
||||
<el-button type="primary" @click="submit" size="large" |
||||
>确定</el-button |
||||
> |
||||
</footer> |
||||
</el-dialog> |
||||
</template> |
||||
<script setup> |
||||
import { |
||||
listRightPerson, |
||||
addRightPerson, |
||||
updateRightPerson, |
||||
delRightPerson, |
||||
} from "@/api/system/rightPerson"; |
||||
import { listPolice } from "@/api/system/police"; |
||||
import feedback from "@/utils/feedback"; |
||||
|
||||
const list = ref([]); |
||||
const query = ref({ |
||||
current: 1, |
||||
size: 10, |
||||
}); |
||||
const total = ref(0); |
||||
function getList() { |
||||
listRightPerson(query.value).then((data) => { |
||||
list.value = data.records; |
||||
total.value = data.total; |
||||
}); |
||||
} |
||||
|
||||
function reset() { |
||||
query.value = { |
||||
current: 1, |
||||
size: 10, |
||||
}; |
||||
getList(); |
||||
} |
||||
|
||||
getList(); |
||||
|
||||
const show = ref(false); |
||||
const mode = ref("add"); |
||||
const formData = ref({}); |
||||
const formRef = ref(null); |
||||
function handleEdit(row) { |
||||
show.value = true; |
||||
mode.value = "edit"; |
||||
formData.value = row; |
||||
} |
||||
|
||||
function submit() { |
||||
formRef.value.validate((flag) => { |
||||
if (flag) { |
||||
if (mode.value === "edit") { |
||||
updateRightPerson(formData.value).then(() => { |
||||
show.value = false; |
||||
getList(); |
||||
feedback.msgSuccess("操作成功"); |
||||
}); |
||||
} else { |
||||
addRightPerson(formData.value).then(() => { |
||||
show.value = false; |
||||
formData.value = {}; |
||||
getList(); |
||||
feedback.msgSuccess("操作成功"); |
||||
}); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
|
||||
watch(mode, (val) => { |
||||
if (val === "add") { |
||||
formData.value = {}; |
||||
} |
||||
}); |
||||
|
||||
function handleShowAdd() { |
||||
mode.value = "add"; |
||||
show.value = true; |
||||
} |
||||
|
||||
async function querySearch(queryString, cb) { |
||||
if (!queryString) { |
||||
cb([]); |
||||
} |
||||
const data = await listPolice({ |
||||
size: 20, |
||||
current: 1, |
||||
empNo: queryString, |
||||
}); |
||||
cb(data.records); |
||||
} |
||||
|
||||
function handleSelect(item) { |
||||
console.log(item) |
||||
formData.value.empName = item.name; |
||||
formData.value.empNo = item.empNo; |
||||
formData.value.idCode = item.idCode; |
||||
} |
||||
|
||||
const handleDelete = async (row) => { |
||||
await feedback.confirm(`确定要删除 ${row.empName}?`); |
||||
await delRightPerson(row.id); |
||||
feedback.msgSuccess("删除成功"); |
||||
getList(); |
||||
}; |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
</style> |
||||
@ -1,661 +0,0 @@
|
||||
<template> |
||||
<div class="container"> |
||||
<header class="mb-20"> |
||||
<el-form :label-width="114"> |
||||
<el-row> |
||||
<el-col :span="6"> |
||||
<el-form-item label="申请时间"> |
||||
<date-time-range-picker-ext |
||||
v-model="query.applyDate" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="事发时间"> |
||||
<date-time-range-picker-ext |
||||
v-model="query.happenTime" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="姓名"> |
||||
<el-input |
||||
placeholder="请输入姓名" |
||||
v-model="query.applicantEmpName" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="6"> |
||||
<el-form-item label="申请人单位"> |
||||
<depart-tree-select v-model="query.departId" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
</el-form> |
||||
<div class="flex between"> |
||||
<el-button type="primary" @click="handleShowAdd"> |
||||
<template #icon> |
||||
<icon name="el-icon-Plus" /> |
||||
</template> |
||||
申请抚慰</el-button |
||||
> |
||||
<div> |
||||
<el-button type="primary" @click="getList"> |
||||
<template #icon> |
||||
<icon name="el-icon-Search" /> |
||||
</template> |
||||
查询</el-button |
||||
> |
||||
<el-button @click="reset">重置</el-button> |
||||
</div> |
||||
</div> |
||||
</header> |
||||
<div class="table-container"> |
||||
<el-table :data="list"> |
||||
<el-table-column |
||||
label="抚慰编号" |
||||
prop="number" |
||||
show-overflow-tooltip |
||||
/> |
||||
<el-table-column |
||||
label="申请时间" |
||||
prop="applyDate" |
||||
width="160" |
||||
/> |
||||
<el-table-column |
||||
label="事发时间" |
||||
prop="happenTime" |
||||
width="160" |
||||
/> |
||||
<el-table-column |
||||
label="申请人姓名" |
||||
prop="applicantEmpName" |
||||
width="100" |
||||
/> |
||||
<el-table-column label="申请人单位" prop="departName" /> |
||||
<el-table-column label="开户行"> |
||||
<template #default="{ row }"> |
||||
<span>{{ row.bankCard }}</span> |
||||
<span>{{ row.bankBranch }}</span> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="状态" width="100"> |
||||
<template #default="{ row }"> |
||||
<el-tag type="success" v-if="row.status === 1" |
||||
>正常</el-tag |
||||
> |
||||
</template> |
||||
</el-table-column> |
||||
<el-table-column label="操作" width="200"> |
||||
<template #default="{ row }"> |
||||
<!-- <el-button |
||||
link |
||||
>查看</el-button |
||||
> |
||||
<el-button |
||||
link |
||||
>下载</el-button |
||||
> |
||||
<el-button |
||||
link |
||||
type="danger" |
||||
>删除</el-button |
||||
> --> |
||||
</template> |
||||
</el-table-column> |
||||
</el-table> |
||||
</div> |
||||
<div class="flex end mt-8"> |
||||
<el-pagination |
||||
@size-change="getList" |
||||
@current-change="getList" |
||||
:page-sizes="[10, 20, 50]" |
||||
v-model:page-size="query.size" |
||||
v-model:current-page="query.current" |
||||
layout="total, sizes, prev, pager, next" |
||||
:total="total" |
||||
> |
||||
</el-pagination> |
||||
</div> |
||||
</div> |
||||
|
||||
<el-dialog |
||||
:title="mode === 'add' ? '申请抚慰' : '编辑抚慰信息'" |
||||
v-model="show" |
||||
width="60vw" |
||||
top="5vh" |
||||
> |
||||
<el-form :label-width="140" ref="formRef" :model="form"> |
||||
<h5>办理信息</h5> |
||||
<el-form-item |
||||
label="申请时间" |
||||
:rules="{ |
||||
required: true, |
||||
trigger: ['blur'], |
||||
}" |
||||
prop="" |
||||
> |
||||
<el-date-picker |
||||
v-model="formData.applyDate" |
||||
type="date" |
||||
placeholder="请选择" |
||||
value-format="YYYY-MM-DD" |
||||
style="width: 300px" |
||||
:disabled-date="disabledDate" |
||||
/> |
||||
</el-form-item> |
||||
<el-row> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="主办民警" |
||||
:rules="{ |
||||
required: true, |
||||
trigger: ['blur'], |
||||
}" |
||||
prop="" |
||||
> |
||||
<el-input style="width: 300px" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="主办单位" |
||||
:rules="{ |
||||
required: true, |
||||
trigger: ['blur'], |
||||
}" |
||||
prop="handleDepartId" |
||||
> |
||||
<div style="width: 300px"> |
||||
<depart-tree-select |
||||
v-model="formData.handleDepartId" |
||||
:check-strictly="true" |
||||
@node-click=" |
||||
(node) => |
||||
(formData.handleDepartName = |
||||
node.shortName) |
||||
" |
||||
/> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-divider /> |
||||
<el-row> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="是否为本人申请" |
||||
:rules="{ |
||||
required: true, |
||||
trigger: ['blur'], |
||||
}" |
||||
prop="" |
||||
> |
||||
<el-radio-group v-model="formData.isSelf"> |
||||
<el-radio :value="1">是</el-radio> |
||||
<el-radio :value="0">否</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12" v-if="formData.isSelf === 0"> |
||||
<el-form-item |
||||
label="关系" |
||||
:rules="{ |
||||
required: true, |
||||
trigger: ['blur'], |
||||
message: '请选择', |
||||
}" |
||||
prop="relation" |
||||
> |
||||
<el-radio-group v-model="formData.relation"> |
||||
<el-radio :value="1">同事</el-radio> |
||||
<el-radio :value="2">亲属</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12" v-if="formData.isSelf === 0"> |
||||
<el-form-item |
||||
label="代理人姓名" |
||||
:rules="{ |
||||
required: true, |
||||
trigger: ['blur'], |
||||
}" |
||||
prop="" |
||||
> |
||||
<el-input style="width: 300px" placeholder="请输入" /> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12" v-if="formData.isSelf === 0"> |
||||
<el-form-item |
||||
label="代理人单位" |
||||
:rules="{ |
||||
required: true, |
||||
trigger: ['blur'], |
||||
}" |
||||
prop="" |
||||
> |
||||
<div style="width: 300px"> |
||||
<depart-tree-select |
||||
v-model="formData.handleDepartId" |
||||
:check-strictly="true" |
||||
@node-click=" |
||||
(node) => |
||||
(formData.handleDepartName = |
||||
node.shortName) |
||||
" |
||||
/> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<h5>申请人信息</h5> |
||||
<el-row> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="申请人姓名" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请输入', |
||||
}" |
||||
prop="applicantEmpName" |
||||
> |
||||
<el-input |
||||
v-model="formData.applicantEmpName" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="性别" |
||||
:rules="{ |
||||
required: true, |
||||
}" |
||||
prop="" |
||||
> |
||||
<el-radio-group v-model="formData.sex"> |
||||
<el-radio value="男">男</el-radio> |
||||
<el-radio value="女">女</el-radio> |
||||
</el-radio-group> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="出生年月" |
||||
:rules="{ |
||||
required: true, |
||||
}" |
||||
prop="" |
||||
> |
||||
<el-date-picker |
||||
v-model="formData.birthday" |
||||
type="date" |
||||
placeholder="请选择" |
||||
value-format="YYYY-MM-DD" |
||||
style="width: 300px" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="文化程度" |
||||
:rules="{ |
||||
required: true, |
||||
}" |
||||
prop="" |
||||
> |
||||
<el-select |
||||
clearable |
||||
style="width: 300px" |
||||
v-model="formData.levelEducation" |
||||
> |
||||
<el-option value="高中">高中</el-option> |
||||
<el-option value="大专">大专</el-option> |
||||
<el-option value="本科">本科</el-option> |
||||
<el-option value="研究生及以上" |
||||
>研究生及以上</el-option |
||||
> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="政治面貌" |
||||
:rules="{ |
||||
required: true, |
||||
}" |
||||
prop="" |
||||
> |
||||
<el-input |
||||
v-model="formData.idCode" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="身份证号码" |
||||
:rules="{ |
||||
required: true, |
||||
}" |
||||
prop="" |
||||
> |
||||
<el-input |
||||
v-model="formData.idCode" |
||||
clearable |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="联系电话" |
||||
:rules="{ |
||||
required: true, |
||||
trigger: ['blur'], |
||||
}" |
||||
prop="" |
||||
> |
||||
<el-input |
||||
v-model="formData.idCode" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
|
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="单位" |
||||
:rules="{ |
||||
required: true, |
||||
trigger: ['blur'], |
||||
}" |
||||
prop="" |
||||
> |
||||
<div style="width: 300px"> |
||||
<depart-tree-select |
||||
v-model="formData.involveDepartId" |
||||
:check-strictly="true" |
||||
/> |
||||
</div> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="职务" prop=""> |
||||
<el-input |
||||
v-model="formData.bankCard" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="警种" |
||||
:rules="{ |
||||
required: true, |
||||
trigger: ['blur'], |
||||
}" |
||||
prop="" |
||||
> |
||||
<el-select |
||||
v-model="formData.policeType" |
||||
clearable |
||||
style="width: 300px" |
||||
> |
||||
<el-option |
||||
v-for="item in dict.policeType" |
||||
:key="item.id" |
||||
:label="item.dictLabel" |
||||
:value="item.dictValue" |
||||
/> |
||||
</el-select> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item |
||||
label="警号" |
||||
:rules="{ |
||||
required: true, |
||||
trigger: ['blur'], |
||||
}" |
||||
prop="applicantEmpNo" |
||||
> |
||||
<el-input |
||||
v-model="formData.applicantEmpNo" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="警衔" prop=""> |
||||
<el-input |
||||
v-model="formData.applicantEmpNo" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="开户行" prop="bankCard"> |
||||
<el-input |
||||
v-model="formData.bankCard" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="所属支行" prop="bankBranch"> |
||||
<el-input |
||||
v-model="formData.bankBranch" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="银行账号" prop="bankCardAccount"> |
||||
<el-input |
||||
v-model="formData.bankCardAccount" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-divider /> |
||||
<h5>案发情况</h5> |
||||
<el-row> |
||||
<el-col :span="12"> |
||||
<el-form-item label="事发时间" prop=""> |
||||
<el-date-picker |
||||
v-model="formData.discoveryTime" |
||||
type="datetime" |
||||
placeholder="请选择" |
||||
value-format="YYYY-MM-DD HH:mm" |
||||
time-format="HH:mm" |
||||
style="width: 300px" |
||||
:disabled-date="disabledDate" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="24"> |
||||
<el-form-item label="事实及理由" prop=""> |
||||
<el-input |
||||
v-model="formData.bankCardAccount" |
||||
type="textarea" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="案发环节" prop=""> |
||||
<el-input |
||||
v-model="formData.bankCardAccount" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="受伤程度" prop=""> |
||||
<el-input |
||||
v-model="formData.bankCardAccount" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="侵权形式" prop=""> |
||||
<el-input |
||||
v-model="formData.bankCardAccount" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="办案单位" prop=""> |
||||
<el-input |
||||
v-model="formData.bankCardAccount" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="侵权人姓名" prop=""> |
||||
<el-input |
||||
v-model="formData.bankCardAccount" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
<el-col :span="12"> |
||||
<el-form-item label="处理方式" prop=""> |
||||
<el-input |
||||
v-model="formData.bankCardAccount" |
||||
style="width: 300px" |
||||
placeholder="请输入" |
||||
/> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-divider /> |
||||
<h5>佐证材料</h5> |
||||
<el-row> |
||||
<el-col :span="12"> |
||||
<el-form-item label="附件" prop=""> |
||||
<file-upload /> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
<el-divider /> |
||||
<h5>呈报审批</h5> |
||||
<el-row> |
||||
<el-col :span="12"> |
||||
<el-form-item label="审批人" prop=""> |
||||
<el-input /> |
||||
</el-form-item> |
||||
</el-col> |
||||
</el-row> |
||||
</el-form> |
||||
<footer class="flex end"> |
||||
<el-button @click="show = false" size="large">取消</el-button> |
||||
<el-button type="primary" @click="submit" size="large" |
||||
>确定</el-button |
||||
> |
||||
</footer> |
||||
</el-dialog> |
||||
</template> |
||||
<script setup> |
||||
import { listUser, addUser, updateUser } from "@/api/system/user"; |
||||
import { listComfort } from "@/api/work/comfort"; |
||||
import { listRole } from "@/api/system/role"; |
||||
import feedback from "@/utils/feedback"; |
||||
|
||||
import useCatchStore from "@/stores/modules/catch"; |
||||
|
||||
const catchStore = useCatchStore(); |
||||
const dict = catchStore.getDicts(["policeType"]); |
||||
|
||||
const list = ref([]); |
||||
const query = ref({ |
||||
current: 1, |
||||
size: 10, |
||||
}); |
||||
const total = ref(0); |
||||
function getList() { |
||||
listComfort(query.value).then((data) => { |
||||
list.value = data.records; |
||||
total.value = data.total; |
||||
}); |
||||
} |
||||
|
||||
function reset() { |
||||
query.value = { |
||||
current: 1, |
||||
size: 10, |
||||
}; |
||||
getList(); |
||||
} |
||||
|
||||
getList(); |
||||
|
||||
const show = ref(false); |
||||
const mode = ref("add"); |
||||
const formData = ref({}); |
||||
const formRef = ref(null); |
||||
function handleEdit(row) { |
||||
show.value = true; |
||||
mode.value = "edit"; |
||||
form.value = row; |
||||
} |
||||
|
||||
function submit() { |
||||
formRef.value.validate((flag) => { |
||||
if (flag) { |
||||
if (mode.value === "edit") { |
||||
updateUser(form.value).then(() => { |
||||
show.value = false; |
||||
getList(); |
||||
feedback.msgSuccess("操作成功"); |
||||
}); |
||||
} else { |
||||
addUser(form.value).then(() => { |
||||
show.value = false; |
||||
form.value = {}; |
||||
getList(); |
||||
feedback.msgSuccess("操作成功"); |
||||
}); |
||||
} |
||||
} |
||||
}); |
||||
} |
||||
|
||||
watch(mode, (val) => { |
||||
if (val === "add") { |
||||
form.value = { |
||||
password: "123456", |
||||
}; |
||||
} |
||||
}); |
||||
|
||||
function handleShowAdd() { |
||||
mode.value = "add"; |
||||
show.value = true; |
||||
} |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
h5 { |
||||
margin: 10px 0; |
||||
} |
||||
</style> |
||||
Loading…
Reference in new issue