Commit 48556b95 authored by Jason's avatar Jason

Merge branch 'master' of https://gitlab.taipay.com.tw/jasonwai/tokenvaultmanagement

# Conflicts:
#	Merchant Token Vault Management/backstage/Views/Key/ListKeys.cshtml
parents a831d6ab 0754f3d0
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
using backstage.Helpers;
using backstage.Models.Keys;
using System.Net.Http;
using System.Security.Claims;
using TokenVault_management.Models;
using backstage.Models;
using Microsoft.Extensions.Localization;
using Microsoft.AspNetCore.Localization;
using Microsoft.AspNetCore.Http;
namespace backstage.Controllers
{
[Authorize]
public class KeyController : Controller
{
private readonly IConfiguration _config;
private readonly ICallApi _callApi;
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IStringLocalizer<UserController> _localizer;
private readonly string _currentLanguage;
/// <summary>
/// 讀取組態用
/// </summary>
public KeyController(IConfiguration config, ICallApi callApi, IHttpContextAccessor httpContextAccessor, IStringLocalizer<UserController> localizer)
{
_config = config;
_callApi = callApi;
_httpContextAccessor = httpContextAccessor;
_localizer = localizer;
var requestCultureFeature = _httpContextAccessor.HttpContext.Features.Get<IRequestCultureFeature>();
var currentCulture = requestCultureFeature.RequestCulture.Culture;
_currentLanguage = currentCulture.TwoLetterISOLanguageName;
}
[Authorize(Policy = "AdminOnly")]
public async Task<IActionResult> ListKeys()
{
var ListKeysResponse = new ListKeysResponse();
#region key/list
var url = _config["IP"] + "/security/key/list";
var httpMethod = HttpMethod.Post;
var parameters = new Dictionary<string, string>
{
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
try
{
ListKeysResponse = JsonConvert.DeserializeObject<ListKeysResponse>(apiResult.Data.ToString());
if (ListKeysResponse.r == 0)
{
return View(ListKeysResponse.d);
}
else
{
TempData["IsSuccess"] = false;
TempData["msg"] = ListKeysResponse.m;
return View();
}
}
catch (Exception e)
{
TempData["IsSuccess"] = false;
TempData["msg"] = e.Message + e.InnerException?.Message;
return View();
}
}
TempData["IsSuccess"] = false;
TempData["msg"] = apiResult.Message;
return View();
#endregion
}
/// <summary>
/// ajax
/// </summary>
/// <returns></returns>
[Authorize(Policy = "AdminOnly")]
[HttpPost]
public async Task<ResultModel> CreateKey(int keyId)
{
var result = new ResultModel();
string msg;
#region key/list
var url = _config["IP"] + "/security/key/generate";
var httpMethod = HttpMethod.Post;
var parameters = new Dictionary<string, string>
{
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
try
{
var Response = JsonConvert.DeserializeObject<Response>(apiResult.Data.ToString());
if (Response.r == 0)
{
switch (_currentLanguage)
{
case "en":
msg = "Create key success.";
break;
case "zh":
msg = "新增鑰匙成功";
break;
default:
msg = "新增鑰匙成功";
break;
}
result.IsSuccess = true;
result.Message = msg;
return result;
}
else
{
result.IsSuccess = false;
result.Message = Response.m.ToString();
return result;
}
}
catch (Exception e)
{
result.IsSuccess = false;
result.Message = e.Message + e.InnerException?.Message;
return result;
}
}
result.IsSuccess = false;
result.Message = apiResult.Message;
return result;
#endregion
}
/// <summary>
/// ajax
/// </summary>
/// <returns></returns>
[Authorize(Policy = "AdminOnly")]
[HttpPost]
public async Task<ResultModel> DeleteKey(int keyId)
{
var result = new ResultModel();
string msg;
#region key/list
var url = _config["IP"] + "/security/key";
var httpMethod = HttpMethod.Delete;
var parameters = new Dictionary<string, string>
{
{ "id",keyId.ToString()},
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
try
{
var Response = JsonConvert.DeserializeObject<Response>(apiResult.Data.ToString());
if (Response.r == 0)
{
switch (_currentLanguage)
{
case "en":
msg = "Delete key success.";
break;
case "zh":
msg = "鑰匙刪除成功";
break;
default:
msg = "鑰匙刪除成功";
break;
}
result.IsSuccess = true;
result.Message = msg;
return result;
}
else
{
result.IsSuccess = false;
result.Message = Response.m.ToString();
return result;
}
}
catch (Exception e)
{
result.IsSuccess = false;
result.Message = e.Message + e.InnerException?.Message;
return result;
}
}
result.IsSuccess = false;
result.Message = apiResult.Message;
return result;
#endregion
}
}
}
\ No newline at end of file
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
using backstage.Helpers;
using backstage.Models.Keys;
using System.Net.Http;
using System.Security.Claims;
namespace backstage.Controllers
{
[Authorize]
public class KeyController : Controller
{
private readonly IConfiguration _config;
private readonly ICallApi _callApi;
/// <summary>
/// 讀取組態用
/// </summary>
public KeyController(IConfiguration config, ICallApi callApi)
{
_config = config;
_callApi = callApi;
}
[Authorize(Policy = "AdminOnly")]
public async Task<IActionResult> ListKeys()
{
var ListKeysResponse = new ListKeysResponse();
#region key/list
var url = _config["IP"] + "/security/key/list";
var httpMethod = HttpMethod.Post;
var parameters = new Dictionary<string, string>
{
};
var apiResult = await _callApi.CallAPI(url, parameters, httpMethod);
if (apiResult.IsSuccess)
{
try
{
ListKeysResponse = JsonConvert.DeserializeObject<ListKeysResponse>(apiResult.Data.ToString());
if (ListKeysResponse.r == 0)
{
return View(ListKeysResponse.d);
}
else
{
TempData["IsSuccess"] = false;
TempData["msg"] = ListKeysResponse.m;
return View();
}
}
catch (Exception e)
{
TempData["IsSuccess"] = false;
TempData["msg"] = e.Message+e.InnerException?.Message;
return View();
}
}
TempData["IsSuccess"] = false;
TempData["msg"] = apiResult.Message;
return View();
#endregion
}
}
}
\ No newline at end of file
......@@ -13,6 +13,7 @@ namespace backstage.Models.Keys
public DateTime lastUpdate { get; set; }
public int active { get; set; }
public string expiration { get; set; }
public string[] img { get; set; }
}
public class ListKeysResponse
......
......@@ -117,17 +117,14 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Number of data" xml:space="preserve">
<value>資料數量</value>
</data>
<data name="Number of data modifications this month" xml:space="preserve">
<value>本月資料修改數量</value>
<data name="Modify the number of Token Vault Entry this month" xml:space="preserve">
<value>本月修改代碼化保險庫入口數量</value>
</data>
<data name="Number of departments" xml:space="preserve">
<value>部門數量</value>
</data>
<data name="Number of new data this month" xml:space="preserve">
<value>本月新資料數量</value>
<data name="Number of new Token Vault Entry added this month" xml:space="preserve">
<value>本月新增代碼化保險庫入口數量</value>
</data>
<data name="Number of Token Vaults" xml:space="preserve">
<value>Token Vault數量</value>
......@@ -135,4 +132,7 @@
<data name="Statistic" xml:space="preserve">
<value>數據統計</value>
</data>
<data name="Total number of Token Vault Entry" xml:space="preserve">
<value>代碼化保險庫入口總數量</value>
</data>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Add User" xml:space="preserve">
<value>新增使用者</value>
</data>
<data name="Allow decryption" xml:space="preserve">
<value>允許解密</value>
</data>
<data name="Allow delete" xml:space="preserve">
<value>允許刪除</value>
</data>
<data name="Allow to add" xml:space="preserve">
<value>允許新增</value>
</data>
<data name="Allow update" xml:space="preserve">
<value>允許更新</value>
</data>
<data name="Choose department" xml:space="preserve">
<value>選擇部門</value>
</data>
<data name="Confirm" xml:space="preserve">
<value>確認</value>
</data>
<data name="Create" xml:space="preserve">
<value>新增欄位</value>
</data>
<data name="Create Department" xml:space="preserve">
<value>新增部門</value>
</data>
<data name="Create key" xml:space="preserve">
<value>新增鑰匙</value>
</data>
<data name="Creation Date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Data Mask" xml:space="preserve">
<value>遮罩</value>
</data>
<data name="Data Token Vault" xml:space="preserve">
<value>資料代碼保險庫</value>
</data>
<data name="Default Mask ID" xml:space="preserve">
<value>預設遮罩ID</value>
</data>
<data name="Delete" xml:space="preserve">
<value>刪除</value>
</data>
<data name="Delete key" xml:space="preserve">
<value>刪除鑰匙</value>
</data>
<data name="Description" xml:space="preserve">
<value>描述</value>
</data>
<data name="Enable" xml:space="preserve">
<value>啟用</value>
</data>
<data name="Encryption" xml:space="preserve">
<value>加密</value>
</data>
<data name="Expiration" xml:space="preserve">
<value>到期日期</value>
</data>
<data name="Field List Management" xml:space="preserve">
<value>欄位列表管理</value>
</data>
<data name="Format" xml:space="preserve">
<value>格式</value>
</data>
<data name="Keys List" xml:space="preserve">
<value>鑰匙列表</value>
</data>
<data name="Last Update" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Manage" xml:space="preserve">
<value>管理</value>
</data>
<data name="Mask" xml:space="preserve">
<value>遮罩</value>
</data>
<data name="Name" xml:space="preserve">
<value>名稱</value>
</data>
<data name="Number of codes" xml:space="preserve">
<value>代碼數量</value>
</data>
<data name="Number of users" xml:space="preserve">
<value>使用者數量</value>
</data>
<data name="Remove User" xml:space="preserve">
<value>移除使用者</value>
</data>
<data name="Revise" xml:space="preserve">
<value>修改</value>
</data>
<data name="Select user" xml:space="preserve">
<value>新增用戶</value>
</data>
<data name="Serial number" xml:space="preserve">
<value>編號</value>
</data>
<data name="Set up" xml:space="preserve">
<value>設定</value>
</data>
<data name="Status" xml:space="preserve">
<value>狀態</value>
</data>
<data name="Token Vault List" xml:space="preserve">
<value>代碼化保險庫列管理</value>
</data>
<data name="Tpye" xml:space="preserve">
<value>種類</value>
</data>
<data name="Username" xml:space="preserve">
<value>用戶名</value>
</data>
<data name="Users" xml:space="preserve">
<value>使用者</value>
</data>
<data name="Vault" xml:space="preserve">
<value>保險庫</value>
</data>
</root>
\ No newline at end of file
......@@ -117,37 +117,43 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="AddToken Vault" xml:space="preserve">
<value>新增代碼庫</value>
</data>
<data name="Choose department" xml:space="preserve">
<value>選擇部門</value>
</data>
<data name="Create Department" xml:space="preserve">
<value>新增部門</value>
</data>
<data name="Creation Date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Data Token Vault" xml:space="preserve">
<value>資料代碼保險庫</value>
</data>
<data name="Description" xml:space="preserve">
<value>描述</value>
</data>
<data name="Management" xml:space="preserve">
<data name="Manage" xml:space="preserve">
<value>管理</value>
</data>
<data name="Name" xml:space="preserve">
<value>名稱</value>
</data>
<data name="Number of data" xml:space="preserve">
<value>資料數量</value>
<data name="Number of codes" xml:space="preserve">
<value>代碼數量</value>
</data>
<data name="Number of users" xml:space="preserve">
<value>使用者數量</value>
</data>
<data name="Serial number" xml:space="preserve">
<value>編號</value>
</data>
<data name="Status" xml:space="preserve">
<value>狀態</value>
</data>
<data name="Token Vault List" xml:space="preserve">
<value>Token Vault列表管理</value>
<value>代碼化保險庫列管理</value>
</data>
<data name="Tpyes" xml:space="preserve">
<data name="Tpye" xml:space="preserve">
<value>種類</value>
</data>
</root>
\ No newline at end of file
......@@ -120,34 +120,40 @@
<data name="Choose department" xml:space="preserve">
<value>選擇部門</value>
</data>
<data name="Create Department" xml:space="preserve">
<value>新增部門</value>
<data name="Create Token Vault" xml:space="preserve">
<value>新增代碼庫</value>
</data>
<data name="Creation Date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Data Token Vault" xml:space="preserve">
<value>資料代碼保險庫</value>
</data>
<data name="Description" xml:space="preserve">
<value>描述</value>
</data>
<data name="Management" xml:space="preserve">
<data name="Manage" xml:space="preserve">
<value>管理</value>
</data>
<data name="Name" xml:space="preserve">
<value>名稱</value>
</data>
<data name="Number of data" xml:space="preserve">
<value>資料數量</value>
<data name="Number of codes" xml:space="preserve">
<value>代碼數量</value>
</data>
<data name="Number of users" xml:space="preserve">
<value>使用者數量</value>
</data>
<data name="Serial number" xml:space="preserve">
<value>編號</value>
</data>
<data name="Status" xml:space="preserve">
<value>狀態</value>
</data>
<data name="Token Vault List" xml:space="preserve">
<value>Token Vault列表管理</value>
<value>代碼化保險庫列管理</value>
</data>
<data name="Tpyes" xml:space="preserve">
<data name="Tpye" xml:space="preserve">
<value>種類</value>
</data>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Choose department" xml:space="preserve">
<value>選擇部門</value>
</data>
<data name="Create" xml:space="preserve">
<value>新增欄位</value>
</data>
<data name="Create Department" xml:space="preserve">
<value>新增部門</value>
</data>
<data name="Creation Date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Data Mask" xml:space="preserve">
<value>遮罩</value>
</data>
<data name="Data Token Vault" xml:space="preserve">
<value>資料代碼保險庫</value>
</data>
<data name="Delete" xml:space="preserve">
<value>刪除</value>
</data>
<data name="Description" xml:space="preserve">
<value>描述</value>
</data>
<data name="Enable" xml:space="preserve">
<value>啟用</value>
</data>
<data name="Field List Management" xml:space="preserve">
<value>欄位列表管理</value>
</data>
<data name="Format" xml:space="preserve">
<value>格式</value>
</data>
<data name="Manage" xml:space="preserve">
<value>管理</value>
</data>
<data name="Name" xml:space="preserve">
<value>名稱</value>
</data>
<data name="Number of codes" xml:space="preserve">
<value>代碼數量</value>
</data>
<data name="Number of users" xml:space="preserve">
<value>使用者數量</value>
</data>
<data name="Revise" xml:space="preserve">
<value>修改</value>
</data>
<data name="Serial number" xml:space="preserve">
<value>編號</value>
</data>
<data name="Set up" xml:space="preserve">
<value>設定</value>
</data>
<data name="Status" xml:space="preserve">
<value>狀態</value>
</data>
<data name="Token Vault List" xml:space="preserve">
<value>代碼化保險庫列管理</value>
</data>
<data name="Tpye" xml:space="preserve">
<value>種類</value>
</data>
<data name="Users" xml:space="preserve">
<value>使用者</value>
</data>
<data name="Vault" xml:space="preserve">
<value>保險庫</value>
</data>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Add mask" xml:space="preserve">
<value>新增遮罩</value>
</data>
<data name="Add User" xml:space="preserve">
<value>新增使用者</value>
</data>
<data name="Allow decryption" xml:space="preserve">
<value>允許解密</value>
</data>
<data name="Allow delete" xml:space="preserve">
<value>允許刪除</value>
</data>
<data name="Allow to add" xml:space="preserve">
<value>允許新增</value>
</data>
<data name="Allow update" xml:space="preserve">
<value>允許更新</value>
</data>
<data name="Are you sure you want to delete the mask?" xml:space="preserve">
<value>是否確定要刪除遮罩?</value>
</data>
<data name="Choose department" xml:space="preserve">
<value>選擇部門</value>
</data>
<data name="Confirm" xml:space="preserve">
<value>確認</value>
</data>
<data name="Create" xml:space="preserve">
<value>新增欄位</value>
</data>
<data name="Create Department" xml:space="preserve">
<value>新增部門</value>
</data>
<data name="Creation Date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Data Mask" xml:space="preserve">
<value>遮罩</value>
</data>
<data name="Data mask list" xml:space="preserve">
<value>資料遮罩列表</value>
</data>
<data name="Data Token Vault" xml:space="preserve">
<value>資料代碼保險庫</value>
</data>
<data name="Default Mask ID" xml:space="preserve">
<value>預設遮罩ID</value>
</data>
<data name="Delete" xml:space="preserve">
<value>刪除</value>
</data>
<data name="Delete mask" xml:space="preserve">
<value>刪除遮罩</value>
</data>
<data name="Description" xml:space="preserve">
<value>描述</value>
</data>
<data name="Enable" xml:space="preserve">
<value>啟用</value>
</data>
<data name="Field" xml:space="preserve">
<value>欄位</value>
</data>
<data name="Field List Management" xml:space="preserve">
<value>欄位列表管理</value>
</data>
<data name="Format" xml:space="preserve">
<value>格式</value>
</data>
<data name="Is it a unique value" xml:space="preserve">
<value>是否為唯一值</value>
</data>
<data name="Manage" xml:space="preserve">
<value>管理</value>
</data>
<data name="Mask" xml:space="preserve">
<value>遮罩</value>
</data>
<data name="Name" xml:space="preserve">
<value>名稱</value>
</data>
<data name="No" xml:space="preserve">
<value></value>
</data>
<data name="Number of codes" xml:space="preserve">
<value>代碼數量</value>
</data>
<data name="Number of users" xml:space="preserve">
<value>使用者數量</value>
</data>
<data name="Please choose a mask (single choice)" xml:space="preserve">
<value>請選擇遮罩(單選)</value>
</data>
<data name="Please select the mask type (single choice)" xml:space="preserve">
<value>請選擇遮罩種類(單選)</value>
</data>
<data name="Remove User" xml:space="preserve">
<value>移除使用者</value>
</data>
<data name="Revise" xml:space="preserve">
<value>修改</value>
</data>
<data name="Select user" xml:space="preserve">
<value>新增用戶</value>
</data>
<data name="Send out" xml:space="preserve">
<value>送出</value>
</data>
<data name="Serial number" xml:space="preserve">
<value>編號</value>
</data>
<data name="Set up" xml:space="preserve">
<value>設定</value>
</data>
<data name="Status" xml:space="preserve">
<value>狀態</value>
</data>
<data name="Token Vault List" xml:space="preserve">
<value>代碼化保險庫列管理</value>
</data>
<data name="Tpye" xml:space="preserve">
<value>種類</value>
</data>
<data name="Type" xml:space="preserve">
<value>種類</value>
</data>
<data name="Username" xml:space="preserve">
<value>用戶名</value>
</data>
<data name="Users" xml:space="preserve">
<value>使用者</value>
</data>
<data name="Vault" xml:space="preserve">
<value>保險庫</value>
</data>
<data name="Yes" xml:space="preserve">
<value></value>
</data>
</root>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Add User" xml:space="preserve">
<value>新增使用者</value>
</data>
<data name="Allow decryption" xml:space="preserve">
<value>允許解密</value>
</data>
<data name="Allow delete" xml:space="preserve">
<value>允許刪除</value>
</data>
<data name="Allow to add" xml:space="preserve">
<value>允許新增</value>
</data>
<data name="Allow update" xml:space="preserve">
<value>允許更新</value>
</data>
<data name="Choose department" xml:space="preserve">
<value>選擇部門</value>
</data>
<data name="Confirm" xml:space="preserve">
<value>確認</value>
</data>
<data name="Create" xml:space="preserve">
<value>新增欄位</value>
</data>
<data name="Create Department" xml:space="preserve">
<value>新增部門</value>
</data>
<data name="Creation Date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Data Mask" xml:space="preserve">
<value>遮罩</value>
</data>
<data name="Data Token Vault" xml:space="preserve">
<value>資料代碼保險庫</value>
</data>
<data name="Default Mask ID" xml:space="preserve">
<value>預設遮罩ID</value>
</data>
<data name="Delete" xml:space="preserve">
<value>刪除</value>
</data>
<data name="Description" xml:space="preserve">
<value>描述</value>
</data>
<data name="Enable" xml:space="preserve">
<value>啟用</value>
</data>
<data name="Field List Management" xml:space="preserve">
<value>欄位列表管理</value>
</data>
<data name="Format" xml:space="preserve">
<value>格式</value>
</data>
<data name="Manage" xml:space="preserve">
<value>管理</value>
</data>
<data name="Mask" xml:space="preserve">
<value>遮罩</value>
</data>
<data name="Name" xml:space="preserve">
<value>名稱</value>
</data>
<data name="Number of codes" xml:space="preserve">
<value>代碼數量</value>
</data>
<data name="Number of users" xml:space="preserve">
<value>使用者數量</value>
</data>
<data name="Remove User" xml:space="preserve">
<value>移除使用者</value>
</data>
<data name="Revise" xml:space="preserve">
<value>修改</value>
</data>
<data name="Select user" xml:space="preserve">
<value>新增用戶</value>
</data>
<data name="Serial number" xml:space="preserve">
<value>編號</value>
</data>
<data name="Set up" xml:space="preserve">
<value>設定</value>
</data>
<data name="Status" xml:space="preserve">
<value>狀態</value>
</data>
<data name="Token Vault List" xml:space="preserve">
<value>代碼化保險庫列管理</value>
</data>
<data name="Tpye" xml:space="preserve">
<value>種類</value>
</data>
<data name="Username" xml:space="preserve">
<value>用戶名</value>
</data>
<data name="Users" xml:space="preserve">
<value>使用者</value>
</data>
<data name="Vault" xml:space="preserve">
<value>保險庫</value>
</data>
</root>
\ No newline at end of file
......@@ -126,25 +126,25 @@
<data name="Create Department" xml:space="preserve">
<value>新增部門</value>
</data>
<data name="creation_date" xml:space="preserve">
<data name="Creation Date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Department ID" xml:space="preserve">
<value>部門ID</value>
</data>
<data name="Department List" xml:space="preserve">
<value>部門列表</value>
</data>
<data name="merchant_id" xml:space="preserve">
<value>部門ID</value>
</data>
<data name="name" xml:space="preserve">
<data name="Name" xml:space="preserve">
<value>名稱</value>
</data>
<data name="phone" xml:space="preserve">
<data name="Phone" xml:space="preserve">
<value>電話</value>
</data>
<data name="submit" xml:space="preserve">
<data name="Submit" xml:space="preserve">
<value>送出</value>
</data>
<data name="username" xml:space="preserve">
<data name="Username" xml:space="preserve">
<value>使用者名稱</value>
</data>
</root>
\ No newline at end of file
......@@ -123,22 +123,22 @@
<data name="Create" xml:space="preserve">
<value>新增部門</value>
</data>
<data name="creation_date" xml:space="preserve">
<data name="Creation Date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Department ID" xml:space="preserve">
<value>部門ID</value>
</data>
<data name="Department List" xml:space="preserve">
<value>部門列表</value>
</data>
<data name="merchant_id" xml:space="preserve">
<value>部門ID</value>
</data>
<data name="name" xml:space="preserve">
<data name="Name" xml:space="preserve">
<value>名稱</value>
</data>
<data name="phone" xml:space="preserve">
<data name="Phone" xml:space="preserve">
<value>電話</value>
</data>
<data name="username" xml:space="preserve">
<data name="Username" xml:space="preserve">
<value>使用者名稱</value>
</data>
</root>
\ No newline at end of file
......@@ -124,13 +124,13 @@
<value>Admin數量</value>
</data>
<data name="Create" xml:space="preserve">
<value>新增</value>
<value>新增使用者</value>
</data>
<data name="creation_date" xml:space="preserve">
<value>建立日期</value>
</data>
<data name="Email" xml:space="preserve">
<value>電子郵件</value>
<value>電子信箱</value>
</data>
<data name="enabled" xml:space="preserve">
<value>啟用</value>
......
......@@ -44,7 +44,7 @@
<div class="col-lg-4 col-md-6 grid-margin stretch-card dashboard-card">
<div class="card">
<div class="card-body">
<h4 class="card-title">Token Vault Entry <br>@Localizer["Number of data"]</h4>
<h4 class="card-title">Token Vault Entry <br>@Localizer["Total number of Token Vault Entry"]</h4>
<div class="card-content text-center">
<img src="~/images/admin-vault-data.svg" class="img-fuild">
<p class="number text-center">200</p>
......@@ -56,7 +56,7 @@
<div class="col-lg-4 col-md-6 grid-margin stretch-card dashboard-card">
<div class="card">
<div class="card-body">
<h4 class="card-title">Token Vualt Entry<br />@Localizer["Number of new data this month"]</h4>
<h4 class="card-title">Token Vualt Entry<br />@Localizer["Number of new Token Vault Entry added this month"]</h4>
<div class="card-content text-center">
<img src="~/images/admin-vault-add.svg" class="img-fuild">
<p class="number text-center">10</p>
......@@ -68,7 +68,7 @@
<div class="col-lg-4 col-md-6 grid-margin stretch-card dashboard-card">
<div class="card">
<div class="card-body">
<h4 class="card-title">Token Vualt Entry<br />@Localizer["Number of data modifications this month"]</h4>
<h4 class="card-title">Token Vualt Entry<br />@Localizer["Modify the number of Token Vault Entry this month"]</h4>
<div class="card-content text-center">
<img src="~/images/admin-vault-edit.svg" class="img-fuild">
<p class="number text-center">7</p>
......
@model backstage.Models.Keys.Key
@{
ViewData["Title"] = "Create field";
}
<!-- partial -->
<div class="page-header">
<h3 class="page-title">Ceate field</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
@*路徑列*@
<div class="col-md-12">
<ul class="breadcrumb breadcrumb_memberGo">
<li class="breadcrumb-item active"><a asp-action="List" asp-route-merchantId="@ViewBag.Merchant_id">Token Vault</a></li>
<li class="breadcrumb-item active"><a asp-action="ListFields" asp-route-merchant_id="@ViewBag.Merchant_id" asp-route-vault_id="@ViewBag.vault_id">Fields data</a></li>
<li class="breadcrumb-item ">Create field</li>
</ul>
</div>
</div>
<form class="forms-sample" method="post" asp-action="CreateDepartment" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<p class="form-title card-description">Basic</p>
<div class="row">
<div class="col-md-6 form-group required">
<label asp-for="name" class="col-form-label" for=""></label>
<input asp-for="name" type="text" class="form-control" >
</div>
<div class="col-md-4 form-group required">
<label asp-for="desc" class="col-form-label" for=""></label>
<input asp-for="desc" type="text" class="form-control" >
</div>
</div>
<div class="row">
<div class="col-md-4 form-group required">
<label asp-for="format_exp" class="col-form-label" for=""></label>
<input asp-for="format_exp" type="text" class="form-control" id="">
<span asp-validation-for="format_exp" class="text-danger"></span>
</div>
<div class="col-md-4 form-group required">
<label asp-for="Enabled" class="col-form-label" for=""></label>
<input asp-for="Enabled" type="text" class="form-control" id="">
<span asp-validation-for="Enabled" class="text-danger"></span>
</div>
</div>
<button type="submit" class="btn btn-primary mr-2">Submit</button>
<a type="button" class="btn btn-light" asp-action="ListFields">Back to list</a>
</form>
</div>
</div>
</div>
</div>
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
showAlert(IsSuccess, msg);
}
</script>
}
......@@ -141,7 +141,7 @@
<i class="mdi mdi-earth"></i>
</a>
<div class="dropdown-menu dropdown-menu-right navbar-dropdown preview-list" aria-labelledby="languageDropdown">
<a class="dropdown-item preview-item" asp-action="ChangeLanguage" asp-controller="Home" asp-route-lang="en" asp-route-returnUrl="@Context.Request.Path.Value">
<a class="dropdown-item preview-item" asp-action="ChangeLanguage" asp-controller="Home" asp-route-lang="en"asp-route-returnUrl="@($"{Context.Request.Path.Value}{Context.Request.QueryString}")">
<div class="preview-thumbnail">
<div class="preview-icon languageIcon">
<img src="/images/icon-lan-en-80.jpg">
......@@ -152,7 +152,7 @@
</div>
</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item preview-item" asp-action="ChangeLanguage" asp-controller="Home" asp-route-lang="zh" asp-route-returnUrl="@Context.Request.Path.Value">
<a class="dropdown-item preview-item" asp-action="ChangeLanguage" asp-controller="Home" asp-route-lang="zh" asp-route-returnUrl="@($"{Context.Request.Path.Value}{Context.Request.QueryString}")">
<div class="preview-thumbnail">
<div class="preview-icon languageIcon">
......
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@model backstage.Models.TokenVault.Field
@{
ViewData["Title"] = @Localizer["Create field"];
}
<!-- partial -->
<div class="page-header">
<h3 class="page-title">Ceate field</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
@*路徑列*@
<div class="col-md-12">
<ul class="breadcrumb breadcrumb_memberGo">
<li class="breadcrumb-item active"><a asp-action="List" asp-route-merchantId="@ViewBag.Merchant_id">@Localizer["Token Vault"]</a></li>
<li class="breadcrumb-item active"><a asp-action="ListFields" asp-route-merchant_id="@ViewBag.Merchant_id" asp-route-vault_id="@ViewBag.vault_id">@Localizer["Fields data"]</a></li>
<li class="breadcrumb-item ">Create field</li>
</ul>
</div>
</div>
<form class="forms-sample" method="post" asp-action="CreateDepartment" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<p class="form-title card-description">Basic</p>
<div class="row">
<div class="col-md-6 form-group required">
<label asp-for="name" class="col-form-label" for="">@Localizer["Name"]</label>
<input asp-for="name" type="text" class="form-control">
</div>
<div class="col-md-4 form-group required">
<label asp-for="desc" class="col-form-label" for="">@Localizer["Description"]</label>
<input asp-for="desc" type="text" class="form-control">
</div>
</div>
<div class="row">
<div class="col-md-4 form-group required">
<label asp-for="format_exp" class="col-form-label" for="">@Localizer["Format"]</label>
<input asp-for="format_exp" type="text" class="form-control" id="">
<span asp-validation-for="format_exp" class="text-danger"></span>
</div>
<div class="col-md-4 form-group required">
<label asp-for="Enabled" class="col-form-label" for="">@Localizer["Enable"]</label>
<input asp-for="Enabled" type="text" class="form-control" id="">
<span asp-validation-for="Enabled" class="text-danger"></span>
</div>
</div>
<button type="submit" class="btn btn-primary mr-2">@Localizer["Send out"]</button>
<a type="button" class="btn btn-light" asp-action="ListFields">@Localizer["Back to list"]</a>
</form>
</div>
</div>
</div>
</div>
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
showAlert(IsSuccess, msg);
}
</script>
}
@model backstage.Models.TokenVault.TokenVaultForCreate
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@model backstage.Models.TokenVault.TokenVaultForCreate
@{
ViewData["Title"] = "新增TokenVault";
ViewData["Title"] = @Localizer["Add Token Vault"];
}
<!-- partial -->
<div class="page-header">
<h3 class="page-title">新增TokenVault</h3>
<h3 class="page-title">@Localizer["Add Token Vault"]</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div class="floating-msg" id="msgDiv"></div>
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
<div class="col-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<h4 class="card-title">新增TokenVault</h4>
<h4 class="card-title">@Localizer["Add Token Vault"]</h4>
<form class="forms-sample" method="post" asp-action="CreateTokenVault" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<p class="form-title card-description">Basic</p>
<div class="row">
<div class="col-md-6 form-group required">
<select id="selectDepartmentList" class="form-control" asp-for="merchant_id" asp-items="ViewBag.DepartmentsList">
<option value="">Choose department</option>
</select>
</div>
</div>
<div class="row">
......@@ -44,11 +46,11 @@
<div class="col-md-4 form-group required">
<label asp-for="description" class="col-form-label" for=""></label>
<input asp-for="description" type="text" class="form-control" id="">
<input asp-for="description" type="text" class="form-control" id="">
<span asp-validation-for="description" class="text-danger"></span>
</div>
</div>
......
......@@ -14,7 +14,7 @@
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div class="floating-msg" id="msgDiv"></div>
</div>
......@@ -43,7 +43,7 @@
</select>
</div>
<div class="col-md-auto">
<a type="button" class="btn btn-info float-right mb-2 @disabledClass" asp-action="CreateTokenVault"> @Localizer["Create Department"]</a>
<a type="button" class="btn btn-info float-right mb-2 @disabledClass" asp-action="CreateTokenVault"> @Localizer["Create Token Vault"]</a>
</div>
</div>
<div class="row">
......@@ -58,14 +58,14 @@
<table class="table table-striped ">
<thead>
<tr class="">
<th>Id</th>
<th>@Localizer["Serial number"]</th>
<th> @Localizer["Name"]</th>
<th> @Localizer["Description"]</th>
<th> @Localizer["Tpyes"]</th>
<th> @Localizer["Tpye"]</th>
<th> @Localizer["Creation Date"]</th>
<th> @Localizer["Status"]</th>
<th> @Localizer["Management"]</th>
<th> @Localizer["Number of data"]</th>
<th> @Localizer["Manage"]</th>
<th> @Localizer["Number of codes"]</th>
<th> @Localizer["Number of users"]</th>
</tr>
......@@ -104,6 +104,7 @@
</div>
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
......@@ -117,26 +118,21 @@
// 在頁面載入時檢查 localStorage 是否有選單值
var selectedOption = localStorage.getItem('selectedOption');
console.log('selectedOption=' + selectedOption);
if (selectedOption) {
// 觸發 AJAX 請求並填入資料
loadData(selectedOption);
$('#selectDepartmentList').val(selectedOption);
}
// 在選單變更時保存選擇的值至 localStorage
$('#selectDepartmentList').change(function () {
var selectedOption = $(this).val();
localStorage.setItem('selectedOption', selectedOption);
});
var selectedValue = $('#selectDepartmentList').val();
console.log('selectedValue=' + selectedValue);
if (selectedValue != 0) {
selectedOption = $('#selectDepartmentList').val();
console.log('selectedOption=' + selectedOption);
if (selectedOption != 0) {
// 使用 AJAX 傳遞選擇的值
$.ajax({
url: '/TokenVault/ListTokenVaultAjax', // 替換為適當的控制器方法路徑
type: 'POST', // 或 'GET',根據實際需求
data: { merchantId: selectedValue },
data: { merchantId: selectedOption },
success: function (response) {
$('#tbody').empty();
$('#tbody').append(response);
......@@ -151,13 +147,16 @@
}
// 當選擇下拉選單時觸發事件
$('#selectDepartmentList').change(function () {
var selectedValue = $(this).val(); // 獲取選擇的值
loadData(selectedValue);
var selectedOption = parseInt($(this).val()); // 獲取選擇的值
localStorage.setItem('selectedOption', selectedOption);
loadData(selectedOption);
console.log('localStorage.setItem=' + selectedOption)
});
// 定義 AJAX 請求函式,將選單值傳遞至後端並填入 tbody
function loadData(selectedOption) {
console.log('loadData,selectedOption=' + selectedOption);
// 使用 AJAX 傳遞選擇的值
$.ajax({
url: '/TokenVault/ListTokenVaultAjax', // 替換為適當的控制器方法路徑
......@@ -167,7 +166,7 @@
$('#tbody').empty();
$('#tbody').append(response);
// 在成功取得回應後的處理邏輯
//console.log(response);
console.log(response);
},
error: function (xhr, status, error) {
// 在發生錯誤時的處理邏輯
......@@ -192,6 +191,15 @@
});
//權限按鈕
$(document).on('click', '.permissionBtn', function () {
var vaultid = $(this).data('vault_id');
var merchantid = $(this).data('merchant_id');
console.log('vaultid=' + vaultid);
window.location.href = '/tokenvault/Permission/' + "?vault_id=" + vaultid + "&Merchant_id=" + merchantid;
});
})
......
@model backstage.Models.TokenVault.FieldsResponse
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@model backstage.Models.TokenVault.FieldsResponse
@{
ViewData["Title"] = "Fields列表管理";
ViewData["Title"] = @Localizer["Field List Management"];
}
@{
bool isAdmin = User.IsInRole("Admin");
......@@ -34,9 +36,14 @@
}
}
</script>
<style>
.label-space {
margin-right: 30px; /* 根据需要调整间距大小 */
}
</style>
}}
<div class="page-header">
<h3 class="page-title">Fields列表管理列表管理</h3>
<h3 class="page-title">@Localizer["Field List Management"]</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
......@@ -50,27 +57,32 @@
<div class="col-lg-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
@*路徑列*@
<div class="row">
<div class="col-md-12">
<ul class="breadcrumb breadcrumb_memberGo">
<li class="breadcrumb-item active"><a asp-action="List" asp-route-merchantId="@ViewBag.Merchant_id">Token Vault</a></li>
<li class="breadcrumb-item ">Fields Data</li>
<li class="breadcrumb-item active">
<a asp-action="List" asp-route-merchantId="@ViewBag.Merchant_id">
@Localizer["Token Vault List"]
</a>
</li>
<li class="breadcrumb-item ">@Localizer["Field List Management"]</li>
</ul>
</div>
</div>
<div style="display: flex; justify-content: space-between;">
<div style="float: left; width: 50%;">
<div class="table-responsive">
<table class="table table-striped table-hover0 table-bordered0" id="memberGoTbl_dataDetail">
<tbody>
<tr>
<th>Token Vault</th>
<td class="item">ID</td>
<th>@Localizer["Token Vault"]</th>
<td class="item">@Localizer["Serial number"]</td>
<td class="content">@ViewBag.VaultInfo.vault_id</td>
<td class="item">Name</td>
<td class="item">@Localizer["Name"]</td>
<td class="content">@ViewBag.VaultInfo.name</td>
</tr>
</tbody>
......@@ -78,21 +90,21 @@
</div>
</div>
<div style="float: right;">
<a type="button" class="btn btn-info float-right mb-2 @disabledClass" data-toggle="modal" data-target="#myModal">Create</a>
<a type="button" class="btn btn-info float-right mb-2 @disabledClass" data-toggle="modal" data-target="#myModal">@Localizer["Create"]</a>
</div>
</div>
<div>
<div class="rank-table">
<div class="table-responsive">
<table class="table table-striped expense-color">
<table class="table table-striped ">
<thead>
<tr class="expense-color">
<th>ID</th>
<th>Name</th>
<th>Descryption</th>
<th>Format</th>
<th>Enable</th>
<th>Management</th>
<tr class="">
<th>@Localizer["Serial number"]</th>
<th>@Localizer["Name"]</th>
<th>@Localizer["Description"]</th>
<th>@Localizer["Format"]</th>
<th>@Localizer["Enable"]</th>
<th>@Localizer["Manage"]</th>
</tr>
</thead>
......@@ -101,7 +113,7 @@
{
@foreach (var i in Model.fields)
{
<tr id="@i.id" class="expense-color">
<tr id="@i.id" class="">
<td>@i.id</td>
<td>@i.name</td>
<td>@i.desc</td>
......@@ -111,8 +123,8 @@
<td>
<!-- <button class="btn btnPermission btn-sm" data-toggle="modal" data-target="#permission">資料遮罩</button> -->
<a class="btn btnPermission btn-sm masksBtn">Data Mask</a>
<a class="btn btnPermission btn-sm usersBtn">Users </a>
<a class="btn btnPermission btn-sm masksBtn">@Localizer["Data Mask"]</a>
<a class="btn btnPermission btn-sm usersBtn">@Localizer["Users"] </a>
</td>
</tr>
}
......@@ -139,34 +151,35 @@
<div class="modal-content">
<form class="forms-sample" method="post" asp-action="CreateField" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<h4 class="modal-title">基本資料</h4>
<div class="modal-body">
<div class="form-group">
<input name="merchant_id" value=@ViewBag.Merchant_id hidden />
<input name="vault_id" value=@ViewBag.vault_id hidden />
</div>
<div class="form-group required">
<label class="control-label">name</label>
<label class="control-label">@Localizer["Name"]</label>
<input name="name" type="text" class="form-control" oninput="validateForm()">
<div id="nameError" class="text-danger"></div>
</div>
<div class="form-group required">
<label class="control-label">desc</label>
<label class="control-label">@Localizer["Description"]</label>
<input name="desc" type="text" class="form-control">
</div>
<div class="form-group required">
<label class="control-label">format_exp</label>
<label class="control-label">@Localizer["Format"]</label>
<input name="format_exp" type="text" class="form-control">
</div>
<div class="form-group required">
<label class="control-label">Enabled</label>
<label class="form-check-label label-space">@Localizer["Enable"]</label>
<input name="enabled" type="checkbox" class="form-check-input" checked>
</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary" id="createFieldBtn" disabled>送出</button>
<button type="button" class="btn btn-light" data-dismiss="modal">取消</button>
<button type="submit" class="btn btn-primary" id="createFieldBtn" disabled>@Localizer["Submit"]</button>
<button type="button" class="btn btn-light" data-dismiss="modal">@Localizer["Cancel"]</button>
</div>
</form>
</div>
......
@model List<backstage.Models.Users.User>
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@model List<backstage.Models.Users.User>
@{
ViewData["Title"] = "欄位Users列表管理";
}
......@@ -10,7 +12,7 @@
@section header{
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
}
......@@ -28,35 +30,35 @@
<div class="col-lg-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
@*路徑列*@
<div class="row">
<div class="col-md-12">
<ul class="breadcrumb breadcrumb_memberGo">
<li class="breadcrumb-item active"><a asp-action="List" asp-route-merchantId="@ViewBag.Merchant_id">資料代碼保險庫</a></li>
<li class="breadcrumb-item active"><a asp-action="ListFields" asp-route-merchant_id="@ViewBag.Merchant_id" asp-route-vault_id="@ViewBag.vault_id">欄位資料</a></li>
<li class="breadcrumb-item active">使用者</li>
<li class="breadcrumb-item active"><a asp-action="List" asp-route-merchantId="@ViewBag.Merchant_id">@Localizer["Token Vault List"]</a></li>
<li class="breadcrumb-item active"><a asp-action="ListFields" asp-route-merchant_id="@ViewBag.Merchant_id" asp-route-vault_id="@ViewBag.vault_id">@Localizer["Field List Management"]</a></li>
<li class="breadcrumb-item active">@Localizer["Users"]</li>
</ul>
</div>
</div>
<div>
<a type="button" class="btn btn-info float-right mb-2 @disabledClass" data-toggle="modal" data-target="#myModal">Add User</a>
<a type="button" class="btn btn-info float-right mb-2 @disabledClass" data-toggle="modal" data-target="#myModal">@Localizer["Add User"]</a>
<div class="rank-table">
<div class="table-responsive">
<table class="table table-striped expense-color">
<thead>
<tr class="expense-color">
<th>編號</th>
<th>名稱</th>
<th>username</th>
<th>遮罩</th>
<th>允許解密</th>
<th>允許新增</th>
<th>允許更新</th>
<th>允許刪除</th>
<th>預設遮罩ID</th>
<th>管理</th>
<th>@Localizer["Serial number"]</th>
<th>@Localizer["Name"]</th>
<th>@Localizer["Username"]</th>
<th>@Localizer["Mask"]</th>
<th>@Localizer["Allow decryption"]</th>
<th>@Localizer["Allow to add"]</th>
<th>@Localizer["Allow update"]</th>
<th>@Localizer["Allow delete"]</th>
<th>@Localizer["Default Mask ID"]</th>
<th>@Localizer["Manage"]</th>
</tr>
</thead>
<tbody id="tbody">
......@@ -64,36 +66,36 @@
{
@foreach (var i in Model)
{
<tr id="@i.id" class="expense-color">
<td>@i.id</td>
<td>@i.name</td>
<td>@i.username</td>
<td class="custom-tooltip" data-tooltip="@i.masksSettingText">@i.masksText</td>
<td>
@if (i.allow_decrypt == 1)
{<span>&#x2714;</span>}
</td>
<td>
@if (i.allow_new == 1)
{<span>&#x2714;</span>}
</td>
<td>
@if (i.allow_update == 1)
{<span>&#x2714;</span>}
</td>
<td>
@if (i.allow_del == 1)
{<span>&#x2714;</span>}
</td>
<td>@i.default_mask_id</td>
<td>
<a class="btn btnPermission btn-sm">移除使用者</a>
</td>
</tr>
<tr id="@i.id" class="expense-color">
<td>@i.id</td>
<td>@i.name</td>
<td>@i.username</td>
<td class="custom-tooltip" data-tooltip="@i.masksSettingText">@i.masksText</td>
<td>
@if (i.allow_decrypt == 1)
{<span>&#x2714;</span>}
</td>
<td>
@if (i.allow_new == 1)
{<span>&#x2714;</span>}
</td>
<td>
@if (i.allow_update == 1)
{<span>&#x2714;</span>}
</td>
<td>
@if (i.allow_del == 1)
{<span>&#x2714;</span>}
</td>
<td>@i.default_mask_id</td>
<td>
<a data-id="@i.id" class="btn btnPermission btn-sm" data-toggle="modal" data-target="#delete-field-user">@Localizer["Remove User"]</a>
</td>
</tr>
}
}
......@@ -117,7 +119,7 @@
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="myModalLabel">選擇使用者</h5>
<h5 class="modal-title" id="myModalLabel">@Localizer["Select user"]</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
......@@ -129,11 +131,53 @@
</select>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" id="confirmBtn" data-dismiss="modal">確認</button>
<button type="button" class="btn btn-primary" id="confirmBtn" data-dismiss="modal">@Localizer["Confirm"]</button>
</div>
</div>
</div>
</div>
<!--移除user Form-->
<!-- Modal -->
<div class="modal fade " id="delete-field-user" tabindex="-1" style=" padding-right: 17px;" aria-modal="true" role="dialog">
<div class="modal-dialog modal-sm modalforMemberGo">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<h4>
@Localizer["Remove user"]
</h4>
</div> <!--END of div "modal-header"-->
<div class="modal-body" style="padding-top:35px; padding-bottom: 35px">
<form>
<p>
@Localizer["Are you sure you want to remove this user?"]
</p>
<div class="SubmitBlock SubmitBlock_sm">
<button type="button" id="delUserConfirmBtn" class="btn btn-mainblue-solid" style="margin-right: 10px; width: 80px"> @Localizer["Confirm"]</button>
<button type="button" class="btn btn-mainblue-hollow" data-dismiss="modal" style="margin-right: 10px; width: 80px"> @Localizer["Cancel"]</button>
</div>
</form>
</div> <!--END of div "modal-body"-->
<div class="modal-footer">
<!--
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
-->
</div> <!--END of div "modal-footer"-->
</div><!-- END of Modal content-->
</div><!-- END of div "modal-dialog modal-lg" -->
</div>
@section Scripts{
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
......@@ -169,7 +213,7 @@
success: function (response) {
showAlert(response.isSuccess, response.message);
if (response.isSuccess) {
setTimeout(function () {
location.reload();
}, 2000);
......@@ -185,6 +229,54 @@
//移除user
var selectUserId = 0;
$('.btnPermission').click(function () {
selectUserId = $(this).data('id');
console.log('selectUserId=' + selectUserId);
})
$('#delUserConfirmBtn').click(function () {
var data = {
Merchant_id: parseInt('@ViewBag.merchant_id'),
vault_id: parseInt('@ViewBag.vault_id'),
field_id: parseInt('@ViewBag.field_id'),
user_id: selectUserId
};
$.ajax({
url: '/TokenVault/DelUsers',
type: 'POST',
data: JSON.stringify(data),
contentType: "application/json",
success: function (data) {
//console.log(data);
showAlert(data.isSuccess, data.message);
if (data.isSuccess) {
$('#delete-field-user').modal('hide');
setTimeout(function () {
location.reload();
}, 2000);
}
},
error: function (xhr, status, error) {
console.log(xhr.responseText);
showAlert(false, "發生錯誤");
}
});
})
})
......
@using Microsoft.AspNetCore.Mvc.Localization
@inject IViewLocalizer Localizer
@model backstage.Models.TokenVault.FieldsResponse
@{
ViewData["Title"] = @Localizer["Field List Management"];
}
@{
bool isAdmin = User.IsInRole("Admin");
string disabledClass = isAdmin ? "" : "disabled";
}
@section header{
}}
<div class="page-header">
<h3 class="page-title">@Localizer["Permission Management"]</h3>
<input id="msg" hidden value="@TempData["msg"]" />
@if (TempData["isSuccess"] != null)
{
<input id="isSuccess" hidden value="@TempData["isSuccess"].ToString()" />
}
<div class="floating-msg" id="msgDiv"></div>
</div>
<div class="row">
<div class="col-lg-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
@*路徑列*@
<div class="row">
<div class="col-md-12">
<ul class="breadcrumb breadcrumb_memberGo">
<li class="breadcrumb-item active">
<a asp-action="List" asp-route-merchantId="@ViewBag.Merchant_id">
@Localizer["Token Vault List"]
</a>
</li>
<li class="breadcrumb-item ">@Localizer["Permission Management"]</li>
</ul>
</div>
</div>
<div>
<div class="newBlock newPerm">
<button type="button" class="btn btn-mainblue-solid" data-toggle="collapse" data-target="#newPermission"><img src="~/images/memberGo/permission/userRights-4-white-100.png">新增使用者及權限</button>
</div> <!--end fo newBlock-->
<div id="newPermission" class="collapse">
<div class="row">
<div class="col-md-5">
<div class="form-group">
<select title="請選擇使用者" class="selectpicker selecter form-control selectpicker-tokenization">
<option>test A</option>
<option>test B</option>
<option>test C</option>z
<option>test D</option>
</select>
</div>
</div>
<div class="col-md-5">
<div class="form-group">
<select multiple title="請選擇權限(複選)" class="selectpicker selecter form-control selectpicker-tokenization">
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable &amp; Disable</option>
</select>
</div>
</div>
<div class="col-md-2">
<div class="form-group">
<button class="btn btn-primary newPermConfirmBtn">新增</button>
</div>
</div>
</div>
<hr>
</div> <!--end of "newPermission"-->
</div>
<div class="table-responsive permissionTableDiv">
<table class="table table-striped table-hover" id="memberGoTbl_permission">
<tbody>
<tr>
<th style=" border-left: solid 1px #d9d9d9;">編號</th>
<th>使用者</th>
<th>權限</th>
<th>啟動</th>
<th>建立日</th>
<th>修改日</th>
<th style=" border-right: solid 1px #d9d9d9;">操作</th>
</tr>
<tr>
<td>01</td>
<td>test1</td>
<td>
<div>
<select multiple title="請選擇權限(複選)" class="selectpicker selecter selectpicker-tokenization">
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable &amp; Disable</option>
</select>
</div>
</td>
<td>
<input type="checkbox" checked>
</td>
<td>2018-11-09 15:14:43</td>
<td>2018-11-09 15:14:43</td>
<td>
<button class="btn btn-primary btn-sm" title="儲存">儲存</button>
</td>
</tr>
<tr>
<td>02</td>
<td>test2</td>
<td>
<div>
<select multiple title="請選擇權限(複選)" class="selectpicker selectpicker-tokenization">
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable &amp; Disable</option>
</select>
</div>
</td>
<td>
<input type="checkbox" checked>
</td>
<td>2018-11-09 15:14:43</td>
<td>2018-11-09 15:14:43</td>
<td>
<button class="btn btn-primary btn-sm" title="儲存">儲存</button>
</td>
</tr>
<tr>
<td>03</td>
<td>test3</td>
<td>
<div>
<select multiple title="請選擇權限(複選)" class="selectpicker selectpicker-tokenization">
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable &amp; Disable</option>
</select>
</div>
</td>
<td>
<input type="checkbox" checked>
</td>
<td>2018-11-09 15:14:43</td>
<td>2018-11-09 15:14:43</td>
<td>
<button class="btn btn-primary btn-sm" title="儲存">儲存</button>
</td>
</tr>
<tr>
<td>04</td>
<td>test4</td>
<td>
<div>
<select title="請選擇權限(複選)" class="selectpicker selectpicker-tokenization" multiple>
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable &amp; Disable</option>
</select>
</div>
</td>
<td>
<input type="checkbox" checked>
</td>
<td>2018-11-09 15:14:43</td>
<td>2018-11-09 15:14:43</td>
<td>
<button class="btn btn-primary btn-sm" title="儲存">儲存</button>
</td>
</tr>
<tr>
<td>05</td>
<td>test5</td>
<td>
<div>
<select title="請選擇權限(複選)" class="selectpicker selectpicker-tokenization" multiple>
<option>Read</option>
<option>Write</option>
<option>Update</option>
<option>Delete</option>
<option>Enable &amp; Disable</option>
</select>
</div>
</td>
<td>
<input type="checkbox" checked>
</td>
<td>2018-11-09 15:14:43</td>
<td>2018-11-09 15:14:43</td>
<td>
<button class="btn btn-primary btn-sm" title="儲存">儲存</button>
</td>
</tr>
</tbody>
<!-- <tfoot>
<tr>
<td colspan="7" class="permissionList">
<button type="button" class="btn btn-mainblue-hollow" data-dismiss="modal">關閉</button>
</td>
</tr>
</tfoot> -->
</table>
</div>
</div>
</div>
</div>
</div>
@section Scripts{
<script nonce="KUY8VewuvyUYVEIvEFue4vwyiuf">
$('document').ready(function () {
var msg = '@TempData["msg"]';
var IsSuccess = '@TempData["IsSuccess"]';
console.log(IsSuccess + msg);
if (msg != '') {
showAlert(IsSuccess, msg);
}
//user按鈕
$(document).on('click', '.usersBtn', function () {
var merchant_id = parseInt('@ViewBag.Merchant_id');
var vault_id = parseInt('@ViewBag.vault_id');
var field_id = parseInt($(this).closest('tr').attr('id'));
window.location.href = '/tokenvault/ListUsers/' + "?vault_id=" + vault_id + "&Merchant_id=" + merchant_id+"&field_id="+field_id;
});
//mask按鈕
$(document).on('click', '.masksBtn', function () {
var merchant_id = parseInt('@ViewBag.Merchant_id');
var vault_id = parseInt('@ViewBag.vault_id');
var field_id = parseInt($(this).closest('tr').attr('id'));
window.location.href = '/tokenvault/ListMasks/' + "?vault_id=" + vault_id + "&Merchant_id=" + merchant_id+"&field_id="+field_id;
});
////Modal按鈕
//$("#createFieldBtn").on("click", function () {
// // 確認按鈕被點擊時的處理程式碼
// // 在這裡呼叫您的 API
// $('form').submit(function (e) {
// e.preventDefault(); // 防止表單自動提交
// $.post('/TokenVault/CreateField', $('form').serialize()).done(function (data) {
// console.log(data);
// })
// });
//});
})
</script>
}
\ No newline at end of file
......@@ -21,19 +21,19 @@
<div class="col-12 grid-margin stretch-card">
<div class="card">
<div class="card-body">
<h4 class="card-title"> @Localizer["Create Department"]</h4>
<form class="forms-sample" method="post" asp-action="CreateDepartment" autocomplete="off">
<div id="errorMsg" asp-validation-summary="All" class="text-danger"></div>
<p class="form-title card-description">@Localizer["Basic"]</p>
<div class="row">
<div class="col-md-4 form-group required">
<label asp-for="name" class="col-form-label" for="">@Localizer["name"]</label>
<label asp-for="name" class="col-form-label" for="">@Localizer["Name"]</label>
<input asp-for="name" type="text" class="form-control" id="">
<span asp-validation-for="name" class="text-danger"></span>
</div>
<div class="col-md-4 form-group ">
<label asp-for="phone" class="col-form-label" for="phone">@Localizer["phone"]</label>
<label asp-for="phone" class="col-form-label" for="phone">@Localizer["Phone"]</label>
<input asp-for="phone" class="form-control" id="phone">
<span asp-validation-for="phone" class="text-danger"></span>
</div>
......
......@@ -26,17 +26,17 @@
<table class="table table-striped ">
<thead>
<tr>
<th>@Localizer["merchant_id"]</th>
<th>@Localizer["name"]</th>
<th>@Localizer["Department ID"]</th>
<th>@Localizer["Name"]</th>
@*<th>address</th>
<th>country_id</th>
<th>postcode</th>*@
<th>@Localizer["phone"]</th>
<th>@Localizer["Phone"]</th>
@*<th>fax</th>*@
@*<th>vatid</th>*@
@*<th>enabled</th>*@
<th>@Localizer["creation_date"]</th>
<th>@Localizer["Creation Date"]</th>
@*<th>vatid_verify</th>
<th>deposit_book_verify</th>
<th>user_natid_verify</th>
......
......@@ -24,7 +24,7 @@
@*列表*@
<div class="">
<table class="table table-striped">
<table class="table table-striped" style="display: none;">
<thead>
<tr>
<th>uid</th>
......@@ -127,6 +127,11 @@
onColor: 'success',
offColor: 'danger',
size: 'small',
onInit: function () {
// 初始化完成時的操作
// 例如顯示表格等
$('table').show();
},
onSwitchChange: function (event, state) {
var uid = $(this).data('uid');
var isAdmin = $(this).is(':checked')?1:0;
......@@ -155,6 +160,11 @@
onColor: 'success',
offColor: 'danger',
size: 'small',
onInit: function () {
// 初始化完成時的操作
// 例如顯示表格等
$('table').show();
},
onSwitchChange: function (event, state) {
var uid = $(this).data('uid');
var enabled = $(this).is(':checked') ? 1 : 0;;
......
......@@ -19338,4 +19338,7 @@ tbody {
}
.custom-tooltip {
cursor: pointer !important;
}
\ No newline at end of file
}
.deleteKeyBtn, .reviseKeyBtn, .fa-pen-to-square, .fa-trash-can {
cursor: pointer;
}
<svg id="圖層_1" data-name="圖層 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 132 27.2"><defs><style>.cls-1{fill:#35a9e1;fill-rule:evenodd;}.cls-2{fill:none;}</style></defs><path class="cls-1" d="M15.34,16.26l.66-3.4L8.92,5.6H5.11L2,22.6H5.83L8.31,9Z"/><path class="cls-1" d="M22,5.6H18.44L16.13,19.17,9.58,12,9,15.4l6.55,7.2h3.57Zm3.57,12.64a2,2,0,0,0,.6.92,2.54,2.54,0,0,0,1,.52,5.07,5.07,0,0,0,1.29.17,6.74,6.74,0,0,0,1-.08,3.47,3.47,0,0,0,1-.31,2.51,2.51,0,0,0,.89-.62,1.92,1.92,0,0,0,.49-1,1.38,1.38,0,0,0-.23-1.08,2.56,2.56,0,0,0-1-.68,7.88,7.88,0,0,0-1.42-.47c-.54-.14-1.08-.3-1.62-.46a15.44,15.44,0,0,1-1.62-.55,4.47,4.47,0,0,1-1.35-.87,3,3,0,0,1-.85-1.33,3.83,3.83,0,0,1-.08-1.9,5,5,0,0,1,.89-2.15,6.42,6.42,0,0,1,1.59-1.53,7.47,7.47,0,0,1,2.06-.92,8.34,8.34,0,0,1,2.17-.29,9.71,9.71,0,0,1,2.33.28,4.9,4.9,0,0,1,1.85.93,3.62,3.62,0,0,1,1.12,1.62,5,5,0,0,1,.11,2.41H32.56a2.89,2.89,0,0,0-.09-1.17,1.66,1.66,0,0,0-.54-.76,2.49,2.49,0,0,0-.9-.39,6.51,6.51,0,0,0-1.16-.18,4,4,0,0,0-.85.09,2.18,2.18,0,0,0-.81.32,2.25,2.25,0,0,0-.67.56,1.76,1.76,0,0,0-.36.88,1.44,1.44,0,0,0,0,.77,1.31,1.31,0,0,0,.6.54,8.49,8.49,0,0,0,1.35.51l2.28.63a11.19,11.19,0,0,1,1.17.32,5.15,5.15,0,0,1,1.42.77,3.77,3.77,0,0,1,1.1,1.4,3.67,3.67,0,0,1,.17,2.29,5.36,5.36,0,0,1-.77,2.07A5.83,5.83,0,0,1,33,21.14a7.12,7.12,0,0,1-2.24,1.07,9.42,9.42,0,0,1-2.89.39,9.3,9.3,0,0,1-2.47-.32,5.17,5.17,0,0,1-2-1,4.13,4.13,0,0,1-1.19-1.8,5.21,5.21,0,0,1-.09-2.6h3.36a3,3,0,0,0,.09,1.4M52,5.6l-.53,3H42.89L42.28,12h7.87l-.49,2.74H41.79l-.69,3.92h8.75l-.53,3H37l2.81-16Zm11.22,4.68a2.81,2.81,0,0,0-.64-.89,3,3,0,0,0-1-.62,3.42,3.42,0,0,0-1.23-.21A4.82,4.82,0,0,0,58.2,9a5.07,5.07,0,0,0-1.62,1.25,7.33,7.33,0,0,0-1.09,1.8,10.09,10.09,0,0,0-.6,2.08,8.38,8.38,0,0,0-.12,2,4.37,4.37,0,0,0,.39,1.74,3,3,0,0,0,1.15,1.24,3.75,3.75,0,0,0,2,.47,4,4,0,0,0,2.77-1A5.87,5.87,0,0,0,62.69,16h3.49A9.65,9.65,0,0,1,65,18.71a9,9,0,0,1-1.9,2.1,8.1,8.1,0,0,1-2.45,1.33,8.76,8.76,0,0,1-2.87.46A8,8,0,0,1,54.49,22a5.57,5.57,0,0,1-2.22-1.8,6.57,6.57,0,0,1-1.12-2.67,9.26,9.26,0,0,1,0-3.32,11.34,11.34,0,0,1,1.32-3.41,10.52,10.52,0,0,1,2.07-2.67,9,9,0,0,1,2.88-1.82,8.77,8.77,0,0,1,3.51-.67,7.6,7.6,0,0,1,2.5.39,5.43,5.43,0,0,1,2,1.13A4.71,4.71,0,0,1,66.64,9,5.8,5.8,0,0,1,67,11.47h-3.5a2.58,2.58,0,0,0-.26-1.19M79.39,20.94A8.8,8.8,0,0,1,74,22.57,6.41,6.41,0,0,1,69.12,21c-1-1.09-1.35-2.72-1-5L70,5.6h3.62L71.78,15.93a7.81,7.81,0,0,0-.12,1.36,2.37,2.37,0,0,0,.28,1.16,2,2,0,0,0,.89.81,3.88,3.88,0,0,0,1.71.31,3.93,3.93,0,0,0,2.83-.87A5,5,0,0,0,78.58,16l1.8-10.34H84L82.2,16a7.69,7.69,0,0,1-2.81,5m12.86-8.1a3.28,3.28,0,0,0,2-.54,2.65,2.65,0,0,0,1-1.77,1.81,1.81,0,0,0-.32-1.7,2.45,2.45,0,0,0-1.79-.52H89l-.81,4.5ZM94.89,5.6a5.16,5.16,0,0,1,1.94.34,3.63,3.63,0,0,1,1.36,1,3.53,3.53,0,0,1,.72,1.4,4.11,4.11,0,0,1,0,1.71,5.44,5.44,0,0,1-1.06,2.45A5,5,0,0,1,95.55,14a2.57,2.57,0,0,1,1,.54,2.49,2.49,0,0,1,.56.88,3.51,3.51,0,0,1,.2,1.11,8.28,8.28,0,0,1,0,1.22,2.52,2.52,0,0,1-.12.89,4.1,4.1,0,0,0-.11,1.06,8.68,8.68,0,0,0,0,1,2.09,2.09,0,0,0,.23.81H93.65a5.56,5.56,0,0,1,0-1.82c.08-.69.14-1.37.16-2a2.68,2.68,0,0,0-.44-1.83,2.4,2.4,0,0,0-1.88-.59H87.8L86.6,21.6H83l2.92-16ZM115,5.6l-.52,3h-8.57L105.3,12h7.85l-.46,2.74H104.8l-.7,3.92h8.75l-.53,3H100l2.87-16Zm6.2,13a4.66,4.66,0,0,0,1.57-.3,4,4,0,0,0,1.45-.81,5.65,5.65,0,0,0,1.2-1.47,7.1,7.1,0,0,0,.73-2.24,9.39,9.39,0,0,0,.16-2.18,3.72,3.72,0,0,0-.49-1.66,2.69,2.69,0,0,0-1.24-1.07,5.29,5.29,0,0,0-2.15-.36h-2.54l-1.8,10.05Zm2.65-13a7.77,7.77,0,0,1,2.82.5,4.78,4.78,0,0,1,2.07,1.47,5.5,5.5,0,0,1,1.1,2.45,9.64,9.64,0,0,1,0,3.47,12.16,12.16,0,0,1-1,3.21A8.75,8.75,0,0,1,127,19.3,8.16,8.16,0,0,1,124.34,21a8.68,8.68,0,0,1-3.34.61h-7l2.86-16Z"/><path class="cls-2" d="M0-14.4H132v56H0Z"/></svg>
\ No newline at end of file
<svg id="圖層_1" data-name="圖層 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 309 33.48"><defs><style>.cls-1,.cls-3{fill:#35a9e1;}.cls-1{fill-rule:evenodd;}.cls-2{fill:none;}.cls-3{font-size:19px;font-family:SourceHanSansTC-Medium-B5pc-H, Source Han Sans TC;}</style></defs><path class="cls-1" d="M23.43,21.07l.92-4.72L14.52,6.28H9.23L4.92,29.87h5.31L13.67,11Z"/><path class="cls-1" d="M32.67,6.28H27.73l-3.2,18.83-9.09-9.95-.81,4.72,9.09,10h5Zm5,17.54a2.79,2.79,0,0,0,.83,1.28,3.62,3.62,0,0,0,1.39.72,7.14,7.14,0,0,0,1.79.23A9.3,9.3,0,0,0,43,25.94a4.81,4.81,0,0,0,1.38-.43,3.42,3.42,0,0,0,1.24-.86,2.68,2.68,0,0,0,.68-1.39A1.92,1.92,0,0,0,46,21.77a3.49,3.49,0,0,0-1.39-.95,10.34,10.34,0,0,0-2-.65c-.75-.2-1.5-.42-2.25-.64a22.89,22.89,0,0,1-2.25-.76,6.39,6.39,0,0,1-1.87-1.21,4.18,4.18,0,0,1-1.18-1.85A5.21,5.21,0,0,1,35,13.08a6.86,6.86,0,0,1,1.24-3A8.87,8.87,0,0,1,38.43,8a10.36,10.36,0,0,1,2.86-1.28,11.73,11.73,0,0,1,3-.4,13.61,13.61,0,0,1,3.24.39A6.74,6.74,0,0,1,50.1,8a5,5,0,0,1,1.56,2.25,7,7,0,0,1,.15,3.34H47.33a4,4,0,0,0-.13-1.62,2.2,2.2,0,0,0-.75-1,3.35,3.35,0,0,0-1.25-.55,9.48,9.48,0,0,0-1.61-.25,5.92,5.92,0,0,0-1.18.13,3,3,0,0,0-1.12.44,3.17,3.17,0,0,0-.93.78,2.48,2.48,0,0,0-.5,1.22,2,2,0,0,0,0,1.07,1.83,1.83,0,0,0,.83.75,12.52,12.52,0,0,0,1.88.71l3.16.87a14.93,14.93,0,0,1,1.62.45,7.41,7.41,0,0,1,2,1.06,5.27,5.27,0,0,1,1.52,1.95,5.07,5.07,0,0,1,.24,3.17A7.45,7.45,0,0,1,50,25.57a8,8,0,0,1-2.08,2.27,9.81,9.81,0,0,1-3.11,1.49,12.94,12.94,0,0,1-4,.54,12.81,12.81,0,0,1-3.43-.44A7.24,7.24,0,0,1,34.62,28,5.71,5.71,0,0,1,33,25.54a7.24,7.24,0,0,1-.12-3.61H37.5a4.11,4.11,0,0,0,.13,1.94M74.31,6.28l-.74,4.16H61.66l-.84,4.72H71.74L71.06,19H60.14l-1,5.44H71.32l-.73,4.17H53.49l3.9-22.21Zm15.57,6.49A4.17,4.17,0,0,0,89,11.54a4,4,0,0,0-1.39-.86,4.73,4.73,0,0,0-1.71-.29,6.67,6.67,0,0,0-3,.61,7.17,7.17,0,0,0-2.25,1.73,10.29,10.29,0,0,0-1.51,2.5,13.84,13.84,0,0,0-.83,2.89,11.17,11.17,0,0,0-.17,2.77,6.14,6.14,0,0,0,.54,2.42A4.21,4.21,0,0,0,80.29,25a5.23,5.23,0,0,0,2.77.65,5.56,5.56,0,0,0,3.85-1.39,8.23,8.23,0,0,0,2.23-3.58H94a13.53,13.53,0,0,1-1.63,3.76,12.44,12.44,0,0,1-2.64,2.92,11.33,11.33,0,0,1-3.4,1.84,12.24,12.24,0,0,1-4,.64A11.17,11.17,0,0,1,77.76,29a7.66,7.66,0,0,1-3.08-2.5,9,9,0,0,1-1.55-3.71,12.7,12.7,0,0,1,0-4.6A15.81,15.81,0,0,1,75,13.49a14.54,14.54,0,0,1,2.87-3.7,12.51,12.51,0,0,1,4-2.53,12.31,12.31,0,0,1,4.87-.93,10.76,10.76,0,0,1,3.47.54,7.63,7.63,0,0,1,2.77,1.57A6.46,6.46,0,0,1,94.62,11a7.83,7.83,0,0,1,.5,3.42H90.26a3.52,3.52,0,0,0-.36-1.65m22.42,14.8a12.28,12.28,0,0,1-7.48,2.26,8.89,8.89,0,0,1-6.78-2.18c-1.38-1.51-1.87-3.78-1.38-6.94L99.29,6.28h5l-2.55,14.33a11,11,0,0,0-.17,1.89,3.22,3.22,0,0,0,.39,1.61,2.72,2.72,0,0,0,1.23,1.12,5.25,5.25,0,0,0,2.38.43,5.41,5.41,0,0,0,3.92-1.2,6.92,6.92,0,0,0,1.68-3.75l2.5-14.35h5l-2.49,14.35a10.71,10.71,0,0,1-3.9,6.94m17.84-11.24a4.55,4.55,0,0,0,2.78-.75,3.7,3.7,0,0,0,1.39-2.46,2.52,2.52,0,0,0-.45-2.36,3.41,3.41,0,0,0-2.48-.72h-5.75l-1.12,6.25Zm3.67-10.13a7.07,7.07,0,0,1,2.69.47,5,5,0,0,1,1.89,1.39,5.06,5.06,0,0,1,1,1.94,5.91,5.91,0,0,1,0,2.37,7.48,7.48,0,0,1-1.48,3.4,6.84,6.84,0,0,1-3.19,2.08,3.61,3.61,0,0,1,1.39.75,3.53,3.53,0,0,1,.78,1.23,5,5,0,0,1,.28,1.54,11.92,11.92,0,0,1,0,1.69,3.63,3.63,0,0,1-.17,1.23,5.28,5.28,0,0,0-.15,1.48,10.59,10.59,0,0,0,0,1.38,2.78,2.78,0,0,0,.32,1.13h-5.08a7.67,7.67,0,0,1,0-2.53c.11-1,.19-1.9.22-2.77a3.73,3.73,0,0,0-.61-2.54,3.28,3.28,0,0,0-2.61-.82H124l-1.67,8.78h-5l4-22.2Zm27.9,0L161,10.44H149.12l-.85,4.72h10.9l-.64,3.8H147.58l-1,5.44h12.14L158,28.57h-17.1l4-22.21Zm8.61,18a6.3,6.3,0,0,0,2.18-.42,5.53,5.53,0,0,0,2-1.12,7.82,7.82,0,0,0,1.67-2,10,10,0,0,0,1-3.11,13.37,13.37,0,0,0,.22-3,5,5,0,0,0-.68-2.3A3.7,3.7,0,0,0,175,10.82a7.09,7.09,0,0,0-3-.5h-3.53L166,24.26Zm3.68-18a10.68,10.68,0,0,1,3.91.69,6.68,6.68,0,0,1,2.87,2,7.67,7.67,0,0,1,1.53,3.4,13.46,13.46,0,0,1,0,4.82,16.56,16.56,0,0,1-1.39,4.45,12.2,12.2,0,0,1-2.55,3.61,11.4,11.4,0,0,1-3.69,2.36,12.27,12.27,0,0,1-4.64.85h-9.71l4-22.21Z"/><path class="cls-2" d="M2.14-21.48H185.33V56.24H2.14Z"/><text class="cls-3" transform="translate(191.01 25.42)">資料保護平台</text></svg>
\ No newline at end of file
......@@ -139,23 +139,23 @@ function showBankTypeAdv(){
}
}
function showMaskSettingsAdv(){
function showMaskSettingsAdv() {
var oSel = document.getElementById("maskType");
console.log('testtttttt')
var oValue = oSel.options[oSel.selectedIndex].value;
if(oValue == 0){
document.getElementById("maskSettingsAdvID").classList.toggle("show");
}
else{
document.getElementById("maskSettingsAdvID").classList.remove("show");
var maskSettingsAdvID = document.getElementById("maskSettingsAdvID");
if (oValue == 0 && !maskSettingsAdvID.classList.contains("show")) {
maskSettingsAdvID.classList.add("show");
} else if (oValue != 0 && maskSettingsAdvID.classList.contains("show")) {
maskSettingsAdvID.classList.remove("show");
}
}
///////copy to clipboard/////
// function myFunction() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment