w-web-sso 1.0.21 → 1.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"js/app-legacy.a37bdda6.js","mappings":"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","sources":["webpack://w-web-sso/./node_modules/w-converhp/src/ lazy strict namespace object","webpack://w-web-sso/./src/App.vue","webpack://w-web-sso/./src/components/Common/LoadingWinBar.vue","webpack://w-web-sso/src/components/Common/LoadingWinBar.vue","webpack://w-web-sso/./src/components/Common/LoadingWinBar.vue?20f2","webpack://w-web-sso/./src/components/Common/LoadingWinBar.vue?0bae","webpack://w-web-sso/./src/components/Common/CheckYesNo.vue","webpack://w-web-sso/src/components/Common/CheckYesNo.vue","webpack://w-web-sso/./src/components/Common/CheckYesNo.vue?0786","webpack://w-web-sso/./src/components/Common/CheckYesNo.vue?5d88","webpack://w-web-sso/./src/components/Common/CheckYes.vue","webpack://w-web-sso/src/components/Common/CheckYes.vue","webpack://w-web-sso/./src/components/Common/CheckYes.vue?6829","webpack://w-web-sso/./src/components/Common/CheckYes.vue?d003","webpack://w-web-sso/./src/components/PageLogin.vue","webpack://w-web-sso/src/components/PageLogin.vue","webpack://w-web-sso/./src/components/PageLogin.vue?33c0","webpack://w-web-sso/./src/components/PageLogin.vue?29ef","webpack://w-web-sso/./src/components/Layout.vue","webpack://w-web-sso/./src/components/LayoutContent.vue","webpack://w-web-sso/./src/components/LayoutContentStaInfor.vue","webpack://w-web-sso/src/components/LayoutContentStaInfor.vue","webpack://w-web-sso/./src/components/LayoutContentStaInfor.vue?7d70","webpack://w-web-sso/./src/components/LayoutContentStaInfor.vue?f76e","webpack://w-web-sso/./src/components/LayoutContentUserInfor.vue","webpack://w-web-sso/src/components/LayoutContentUserInfor.vue","webpack://w-web-sso/./src/components/LayoutContentUserInfor.vue?119d","webpack://w-web-sso/./src/components/LayoutContentUserInfor.vue?b904","webpack://w-web-sso/./src/components/LayoutContentUsers.vue","webpack://w-web-sso/src/components/LayoutContentUsers.vue","webpack://w-web-sso/./src/components/LayoutContentUsers.vue?6395","webpack://w-web-sso/./src/components/LayoutContentUsers.vue?9c9b","webpack://w-web-sso/./src/components/LayoutContentTokens.vue","webpack://w-web-sso/src/components/LayoutContentTokens.vue","webpack://w-web-sso/./src/components/LayoutContentTokens.vue?4c7e","webpack://w-web-sso/./src/components/LayoutContentTokens.vue?53b4","webpack://w-web-sso/./src/components/LayoutContentIps.vue","webpack://w-web-sso/src/components/LayoutContentIps.vue","webpack://w-web-sso/./src/components/LayoutContentIps.vue?6d9a","webpack://w-web-sso/./src/components/LayoutContentIps.vue?404a","webpack://w-web-sso/src/components/LayoutContent.vue","webpack://w-web-sso/./src/components/LayoutContent.vue?07f8","webpack://w-web-sso/./src/components/LayoutContent.vue?a8dd","webpack://w-web-sso/src/components/Layout.vue","webpack://w-web-sso/./src/components/Layout.vue?620d","webpack://w-web-sso/./src/components/Layout.vue?6d15","webpack://w-web-sso/src/App.vue","webpack://w-web-sso/./src/App.vue?c036","webpack://w-web-sso/./src/App.vue?0e40","webpack://w-web-sso/./src/store/types.mjs","webpack://w-web-sso/./src/schema/tables/ips.mjs","webpack://w-web-sso/./src/schema/tables/tokens.mjs","webpack://w-web-sso/./src/schema/tables/users.mjs","webpack://w-web-sso/./src/schema/index.mjs","webpack://w-web-sso/./src/store/mutations.mjs","webpack://w-web-sso/./src/store/index.mjs","webpack://w-web-sso/./src/plugins/mLang.mjs","webpack://w-web-sso/./src/plugins/mUI.mjs","webpack://w-web-sso/./src/plugins/mDataSelectorSchema.mjs","webpack://w-web-sso/./src/plugins/mShare.mjs","webpack://w-web-sso/./src/main.js","webpack://w-web-sso/webpack/bootstrap","webpack://w-web-sso/webpack/runtime/chunk loaded","webpack://w-web-sso/webpack/runtime/compat get default export","webpack://w-web-sso/webpack/runtime/define property getters","webpack://w-web-sso/webpack/runtime/global","webpack://w-web-sso/webpack/runtime/hasOwnProperty shorthand","webpack://w-web-sso/webpack/runtime/make namespace object","webpack://w-web-sso/webpack/runtime/jsonp chunk loading","webpack://w-web-sso/webpack/startup"],"sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 9297;\nmodule.exports = webpackEmptyAsyncContext;","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],on:{\"domresize\":_vm.resize}},[(!_vm.autoLogining)?[(_vm.viewState==='login')?_c('PageLogin'):_vm._e(),(_vm.viewState==='backstage')?_c('Layout'):_vm._e()]:_c('div',{staticStyle:{\"position\":\"absolute\",\"top\":\"0px\",\"left\":\"0px\",\"width\":\"100%\",\"height\":\"100%\",\"display\":\"flex\",\"align-items\":\"center\",\"justify-content\":\"center\"}},[_c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"30px\",\"height\":\"30px\",\"viewBox\":\"0 0 24 24\"}},[_c('rect',{attrs:{\"width\":\"9\",\"height\":\"9\",\"x\":\"1.5\",\"y\":\"1.5\",\"fill\":\"currentColor\",\"rx\":\"1\"}},[_c('animate',{attrs:{\"id\":\"svgSpinnersBlocksScale0\",\"attributeName\":\"x\",\"begin\":\"0;svgSpinnersBlocksScale1.end+0.15s\",\"dur\":\"0.6s\",\"keyTimes\":\"0;.2;1\",\"values\":\"1.5;.5;1.5\"}}),_c('animate',{attrs:{\"attributeName\":\"y\",\"begin\":\"0;svgSpinnersBlocksScale1.end+0.15s\",\"dur\":\"0.6s\",\"keyTimes\":\"0;.2;1\",\"values\":\"1.5;.5;1.5\"}}),_c('animate',{attrs:{\"attributeName\":\"width\",\"begin\":\"0;svgSpinnersBlocksScale1.end+0.15s\",\"dur\":\"0.6s\",\"keyTimes\":\"0;.2;1\",\"values\":\"9;11;9\"}}),_c('animate',{attrs:{\"attributeName\":\"height\",\"begin\":\"0;svgSpinnersBlocksScale1.end+0.15s\",\"dur\":\"0.6s\",\"keyTimes\":\"0;.2;1\",\"values\":\"9;11;9\"}})]),_c('rect',{attrs:{\"width\":\"9\",\"height\":\"9\",\"x\":\"13.5\",\"y\":\"1.5\",\"fill\":\"currentColor\",\"rx\":\"1\"}},[_c('animate',{attrs:{\"attributeName\":\"x\",\"begin\":\"svgSpinnersBlocksScale0.begin+0.15s\",\"dur\":\"0.6s\",\"keyTimes\":\"0;.2;1\",\"values\":\"13.5;12.5;13.5\"}}),_c('animate',{attrs:{\"attributeName\":\"y\",\"begin\":\"svgSpinnersBlocksScale0.begin+0.15s\",\"dur\":\"0.6s\",\"keyTimes\":\"0;.2;1\",\"values\":\"1.5;.5;1.5\"}}),_c('animate',{attrs:{\"attributeName\":\"width\",\"begin\":\"svgSpinnersBlocksScale0.begin+0.15s\",\"dur\":\"0.6s\",\"keyTimes\":\"0;.2;1\",\"values\":\"9;11;9\"}}),_c('animate',{attrs:{\"attributeName\":\"height\",\"begin\":\"svgSpinnersBlocksScale0.begin+0.15s\",\"dur\":\"0.6s\",\"keyTimes\":\"0;.2;1\",\"values\":\"9;11;9\"}})]),_c('rect',{attrs:{\"width\":\"9\",\"height\":\"9\",\"x\":\"13.5\",\"y\":\"13.5\",\"fill\":\"currentColor\",\"rx\":\"1\"}},[_c('animate',{attrs:{\"attributeName\":\"x\",\"begin\":\"svgSpinnersBlocksScale0.begin+0.3s\",\"dur\":\"0.6s\",\"keyTimes\":\"0;.2;1\",\"values\":\"13.5;12.5;13.5\"}}),_c('animate',{attrs:{\"attributeName\":\"y\",\"begin\":\"svgSpinnersBlocksScale0.begin+0.3s\",\"dur\":\"0.6s\",\"keyTimes\":\"0;.2;1\",\"values\":\"13.5;12.5;13.5\"}}),_c('animate',{attrs:{\"attributeName\":\"width\",\"begin\":\"svgSpinnersBlocksScale0.begin+0.3s\",\"dur\":\"0.6s\",\"keyTimes\":\"0;.2;1\",\"values\":\"9;11;9\"}}),_c('animate',{attrs:{\"attributeName\":\"height\",\"begin\":\"svgSpinnersBlocksScale0.begin+0.3s\",\"dur\":\"0.6s\",\"keyTimes\":\"0;.2;1\",\"values\":\"9;11;9\"}})]),_c('rect',{attrs:{\"width\":\"9\",\"height\":\"9\",\"x\":\"1.5\",\"y\":\"13.5\",\"fill\":\"currentColor\",\"rx\":\"1\"}},[_c('animate',{attrs:{\"id\":\"svgSpinnersBlocksScale1\",\"attributeName\":\"x\",\"begin\":\"svgSpinnersBlocksScale0.begin+0.45s\",\"dur\":\"0.6s\",\"keyTimes\":\"0;.2;1\",\"values\":\"1.5;.5;1.5\"}}),_c('animate',{attrs:{\"attributeName\":\"y\",\"begin\":\"svgSpinnersBlocksScale0.begin+0.45s\",\"dur\":\"0.6s\",\"keyTimes\":\"0;.2;1\",\"values\":\"13.5;12.5;13.5\"}}),_c('animate',{attrs:{\"attributeName\":\"width\",\"begin\":\"svgSpinnersBlocksScale0.begin+0.45s\",\"dur\":\"0.6s\",\"keyTimes\":\"0;.2;1\",\"values\":\"9;11;9\"}}),_c('animate',{attrs:{\"attributeName\":\"height\",\"begin\":\"svgSpinnersBlocksScale0.begin+0.45s\",\"dur\":\"0.6s\",\"keyTimes\":\"0;.2;1\",\"values\":\"9;11;9\"}})])])]),_c('LoadingWinBar'),_c('CheckYesNo'),_c('CheckYes')],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WDialog',{attrs:{\"show\":_vm.loading,\"maxWidth\":_vm.dialogWidth},on:{\"update:show\":function($event){_vm.loading=$event},\"resize\":_vm.resizeDialog},scopedSlots:_vm._u([{key:\"panel\",fn:function(){return [_c('div',{style:(`padding:${_vm.barPadding-5}px ${_vm.barPadding}px ${_vm.barPadding}px ${_vm.barPadding}px;`)},[_c('div',{staticStyle:{\"padding-bottom\":\"3px\",\"font-size\":\"0.9rem\",\"color\":\"#666\"}},[(_vm.msg!=='')?_c('span',[_vm._v(_vm._s(_vm.msg))]):_c('span',[_vm._v(_vm._s(_vm.$t('processing')))])]),_c('WProgressBar',{style:(`width:${_vm.barWidth}px;`),attrs:{\"height\":3,\"enableContinuous\":true,\"progColor\":'deep-purple lighten-1',\"progBackgroundColor\":'deep-purple lighten-4'}})],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WDialog\r\n :show.sync=\"loading\"\r\n :maxWidth=\"dialogWidth\"\r\n @resize=\"resizeDialog\"\r\n >\r\n\r\n <template v-slot:panel>\r\n\r\n <div :style=\"`padding:${barPadding-5}px ${barPadding}px ${barPadding}px ${barPadding}px;`\">\r\n\r\n\r\n <div style=\"padding-bottom:3px; font-size:0.9rem; color:#666;\">\r\n\r\n <span v-if=\"msg!==''\">{{msg}}</span>\r\n\r\n <span v-else>{{$t('processing')}}</span>\r\n\r\n </div>\r\n\r\n <WProgressBar\r\n :style=\"`width:${barWidth}px;`\"\r\n :height=\"3\"\r\n :enableContinuous=\"true\"\r\n :progColor=\"'deep-purple lighten-1'\"\r\n :progBackgroundColor=\"'deep-purple lighten-4'\"\r\n ></WProgressBar>\r\n\r\n </div>\r\n\r\n </template>\r\n\r\n </WDialog>\r\n</template>\r\n\r\n<script>\r\nimport Vue from 'vue'\r\nimport get from 'lodash-es/get.js'\r\nimport WDialog from 'w-component-vue/src/components/WDialog.vue'\r\nimport WProgressBar from 'w-component-vue/src/components/WProgressBar.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WDialog,\r\n WProgressBar,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n\r\n dialogWidth: 0,\r\n dialogWidthMax: 600,\r\n\r\n barPadding: 20,\r\n barWidth: 0,\r\n msg: '',\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.setLoadingWinBarMessage = vo.setMessage\r\n\r\n },\r\n computed: {\r\n\r\n loading: function() {\r\n let vo = this\r\n let b = get(vo, `$store.state.loading`)\r\n // console.log('loading', b)\r\n return b\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n setMessage: function(msg) {\r\n this.msg = msg\r\n },\r\n\r\n resizeDialog: function(msg) {\r\n // console.log('methods resizeDialog', msg)\r\n\r\n let vo = this\r\n\r\n let w = window.innerWidth\r\n // console.log('window.innerWidth', window.innerWidth)\r\n\r\n //dialogWidth\r\n let dialogWidth = w - vo.barPadding * 2\r\n dialogWidth = Math.max(dialogWidth, 0)\r\n dialogWidth = Math.min(dialogWidth, vo.dialogWidthMax)\r\n vo.dialogWidth = dialogWidth\r\n // console.log('dialogWidth', dialogWidth)\r\n\r\n //barWidth\r\n let barWidth = dialogWidth - vo.barPadding * 2\r\n barWidth = Math.max(barWidth, 0)\r\n vo.barWidth = barWidth\r\n // console.log('barWidth', barWidth)\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoadingWinBar.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LoadingWinBar.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LoadingWinBar.vue?vue&type=template&id=9bcb4aee&scoped=true\"\nimport script from \"./LoadingWinBar.vue?vue&type=script&lang=js\"\nexport * from \"./LoadingWinBar.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9bcb4aee\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WConfirm',{attrs:{\"show\":_vm.bShow,\"title\":_vm.$t('systemMessage'),\"content\":_vm.content,\"_contentColor\":'white',\"_contentIconColor\":'white',\"_contentBackgroundColor\":'orange lighten-5',\"_titleColor\":'white',\"headerBackgroundColor\":'grey lighten-3',\"noBtnText\":_vm.$t('no'),\"yesBtnText\":_vm.$t('yes')},on:{\"update:show\":function($event){_vm.bShow=$event},\"click-no\":function($event){return _vm.clickBtn(false)},\"click-yes\":function($event){return _vm.clickBtn(true)}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WConfirm\r\n :show.sync=\"bShow\"\r\n :title=\"$t('systemMessage')\"\r\n :content=\"content\"\r\n :_contentColor=\"'white'\"\r\n :_contentIconColor=\"'white'\"\r\n :_contentBackgroundColor=\"'orange lighten-5'\"\r\n :_titleColor=\"'white'\"\r\n :headerBackgroundColor=\"'grey lighten-3'\"\r\n :noBtnText=\"$t('no')\"\r\n :yesBtnText=\"$t('yes')\"\r\n @click-no=\"clickBtn(false)\"\r\n @click-yes=\"clickBtn(true)\"\r\n ></WConfirm>\r\n</template>\r\n\r\n<script>\r\nimport Vue from 'vue'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport WConfirm from 'w-component-vue/src/components/WConfirm.vue'\r\n\r\nexport default {\r\n components: {\r\n WConfirm,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n\r\n bShow: false,\r\n pm: null,\r\n\r\n content: '',\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.showCheckYesNo = vo.show\r\n\r\n },\r\n computed: {\r\n },\r\n methods: {\r\n\r\n show: function (content) {\r\n //console.log('methods show', content)\r\n\r\n let vo = this\r\n\r\n //pm\r\n vo.pm = genPm()\r\n\r\n //save\r\n vo.content = content\r\n\r\n //show\r\n vo.bShow = true\r\n\r\n return vo.pm\r\n },\r\n\r\n clickBtn: function(mode) {\r\n //console.log('methods clickBtn', mode)\r\n\r\n let vo = this\r\n\r\n if (mode) {\r\n vo.pm.resolve()\r\n }\r\n else {\r\n vo.pm.reject('close')\r\n }\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckYesNo.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckYesNo.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CheckYesNo.vue?vue&type=template&id=cfad0048&scoped=true\"\nimport script from \"./CheckYesNo.vue?vue&type=script&lang=js\"\nexport * from \"./CheckYesNo.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"cfad0048\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('WConfirm',{attrs:{\"show\":_vm.bShow,\"title\":_vm.$t('systemMessage'),\"content\":_vm.content,\"_contentColor\":'white',\"_contentIconColor\":'white',\"_contentBackgroundColor\":'orange lighten-5',\"headerBackgroundColor\":'grey lighten-3',\"hasNoBtn\":false,\"yesBtnText\":_vm.$t('ok')},on:{\"update:show\":function($event){_vm.bShow=$event},\"click-yes\":function($event){return _vm.clickUnit()}}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <WConfirm\r\n :show.sync=\"bShow\"\r\n :title=\"$t('systemMessage')\"\r\n :content=\"content\"\r\n :_contentColor=\"'white'\"\r\n :_contentIconColor=\"'white'\"\r\n :_contentBackgroundColor=\"'orange lighten-5'\"\r\n :headerBackgroundColor=\"'grey lighten-3'\"\r\n :hasNoBtn=\"false\"\r\n :yesBtnText=\"$t('ok')\"\r\n @click-yes=\"clickUnit()\"\r\n ></WConfirm>\r\n</template>\r\n\r\n<script>\r\nimport Vue from 'vue'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport WConfirm from 'w-component-vue/src/components/WConfirm.vue'\r\n\r\nexport default {\r\n components: {\r\n WConfirm,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n\r\n bShow: false,\r\n pm: null,\r\n\r\n content: '',\r\n\r\n }\r\n },\r\n mounted: function() {\r\n //console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //set\r\n Vue.prototype.$dg.showCheckYes = vo.show\r\n\r\n },\r\n computed: {\r\n },\r\n methods: {\r\n\r\n show: function (content) {\r\n //console.log('methods show', content)\r\n\r\n let vo = this\r\n\r\n //pm\r\n vo.pm = genPm()\r\n\r\n //save\r\n vo.content = content\r\n\r\n //show\r\n vo.bShow = true\r\n\r\n return vo.pm\r\n },\r\n\r\n clickUnit: function() {\r\n //console.log('methods clickUnit')\r\n\r\n let vo = this\r\n\r\n //resolve\r\n vo.pm.resolve()\r\n\r\n //hide\r\n vo.bShow = false\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckYes.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./CheckYes.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CheckYes.vue?vue&type=template&id=9943c370&scoped=true\"\nimport script from \"./CheckYes.vue?vue&type=script&lang=js\"\nexport * from \"./CheckYes.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9943c370\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticStyle:{\"position\":\"relative\",\"width\":\"100vw\",\"height\":\"100svh\"}},[_c('div',{style:(`\n position:absolute; top:0px; left:0px; width:100%; height:100%; display:flex; align-items:center; justify-content:center;\n background-image: linear-gradient(-225deg, ${_vm.c1} 0%, ${_vm.c2} 50%, ${_vm.c3} 100%);\n `)},[_c('div',{},[_c('div',{style:(`padding-top:${_vm.logoSize/2}px;`)}),_c('div',{style:(`\n position:relative;\n width:${_vm.contentWidth}px; padding:10px; border-radius:30px; background:${_vm.c4};\n box-shadow: rgb(0 0 0 / 2%) 2.76726px 2.76726px 2.21381px 0px, rgb(0 0 0 / 3%) 6.6501px 6.6501px 5.32008px 0px, rgb(0 0 0 / 4%) 12.5216px 12.5216px 10.0172px 0px, rgb(0 0 0 / 4%) 22.3363px 22.3363px 17.869px 0px, rgb(0 0 0 / 5%) 41.7776px 41.7776px 33.4221px 0px, rgb(0 0 0 / 7%) 100px 100px 80px 0px;\n `)},[_c('div',{style:(`position:absolute; top:0px; left:50%; transform:translateX(-50%) translateY(-50%); padding:15px 15px 10px 15px; border-radius:50%; background:${_vm.c5};`)},[_c('img',{attrs:{\"width\":_vm.logoSize,\"height\":_vm.logoSize,\"src\":_vm.webLogo}})]),_c('div',{style:(`padding:${_vm.logoSize/2+_vm.contentPadding}px ${_vm.contentPadding}px ${_vm.contentPadding}px ${_vm.contentPadding}px;`)},[_c('div',{staticStyle:{\"padding-bottom\":\"20px\",\"text-align\":\"center\",\"font-size\":\"1.3rem\"}},[_vm._v(\" \"+_vm._s(_vm.webName)+\" \")]),_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"stretch\"}},[_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"padding\":\"0px 10px\",\"background\":\"rgba(34, 44, 77, 0.9)\"}},[_c('WIcon',{attrs:{\"icon\":'mdi-account',\"color\":'#ddd',\"colorHover\":'#eee',\"size\":24}})],1),_c('div',{staticStyle:{\"width\":\"100%\",\"padding\":\"5px 10px\",\"background\":\"rgba(34, 44, 77, 0.8)\"}},[_c('div',{style:(`font-size:0.8rem; color:#eee;`)},[_vm._v(\" \"+_vm._s(_vm.$t('account'))+\" \")]),_c('WText',{attrs:{\"textColor\":'#fff',\"bottomLineBorderColor\":'#b6b6b6',\"bottomLineBorderColorHover\":'#ccc',\"bottomLineBorderColorFocus\":'#ddd'},on:{\"enter\":_vm.login},model:{value:(_vm.account),callback:function ($$v) {_vm.account=$$v},expression:\"account\"}})],1)]),_c('div',{staticStyle:{\"padding-top\":\"10px\"}}),_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"stretch\"}},[_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"padding\":\"0px 10px\",\"background\":\"rgba(34, 44, 77, 0.9)\"}},[_c('WIcon',{attrs:{\"icon\":'mdi-lock',\"color\":'#ddd',\"colorHover\":'#eee',\"size\":24}})],1),_c('div',{staticStyle:{\"width\":\"100%\",\"padding\":\"5px 10px\",\"background\":\"rgba(34, 44, 77, 0.8)\"}},[_c('div',{style:(`font-size:0.8rem; color:#eee;`)},[_vm._v(\" \"+_vm._s(_vm.$t('password'))+\" \")]),_c('WText',{attrs:{\"textColor\":'#fff',\"bottomLineBorderColor\":'#b6b6b6',\"bottomLineBorderColorHover\":'#ccc',\"bottomLineBorderColorFocus\":'#ddd',\"rightIcon\":_vm.showPassword ? 'mdi-eye' : 'mdi-eye-off',\"rightIconColor\":'#ddd',\"rightIconColorHover\":'#eee',\"rightIconColorFocus\":'#ddd',\"rightIconTooltip\":_vm.showPassword ? _vm.$t('toggleToHidePassword') : _vm.$t('toggleToShowPassword'),\"password\":!_vm.showPassword},on:{\"click-right\":function($event){_vm.showPassword=!_vm.showPassword},\"enter\":_vm.login},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}})],1)]),_c('div',{staticStyle:{\"padding-top\":\"30px\"}}),_c('div',{staticStyle:{\"padding\":\"5px 0px\",\"text-align\":\"center\"}},[_c('WButtonChip',{style:(`opacity:${_vm.hasAcPw?1:0.5};`),attrs:{\"text\":_vm.$t('login'),\"textFontSize\":'1.0rem',\"paddingStyle\":{v:8,h:130},\"backgroundColor\":'rgba(255,255,255,0.5)',\"backgroundColorHover\":'rgba(255,255,255,0.7)',\"_shadow\":\"false\",\"editable\":_vm.hasAcPw},on:{\"click\":_vm.login}})],1)])])])]),_c('div',{staticStyle:{\"position\":\"absolute\",\"top\":\"10px\",\"right\":\"10px\"}},[(_vm.showLangSelect)?_c('div',{staticStyle:{\"white-space\":\"nowrap\"}},[_c('WTextSelect',{staticStyle:{\"width\":\"100px\"},attrs:{\"items\":_vm.keysLang,\"value\":_vm.lang},on:{\"input\":_vm.toggleLang},scopedSlots:_vm._u([{key:\"select\",fn:function(props){return [_vm._v(\" \"+_vm._s(_vm.getLangText(props.item))+\" \")]}},{key:\"item\",fn:function(props){return [_vm._v(\" \"+_vm._s(_vm.getLangText(props.item))+\" \")]}}],null,false,2218956916)})],1):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div style=\"position:relative; width:100vw; height:100svh;\">\r\n\r\n <div\r\n :style=\"`\r\n position:absolute; top:0px; left:0px; width:100%; height:100%; display:flex; align-items:center; justify-content:center;\r\n background-image: linear-gradient(-225deg, ${c1} 0%, ${c2} 50%, ${c3} 100%);\r\n `\"\r\n >\r\n\r\n <div style=\"\">\r\n\r\n <div :style=\"`padding-top:${logoSize/2}px;`\"></div>\r\n\r\n <div\r\n :style=\"`\r\n position:relative;\r\n width:${contentWidth}px; padding:10px; border-radius:30px; background:${c4};\r\n box-shadow: rgb(0 0 0 / 2%) 2.76726px 2.76726px 2.21381px 0px, rgb(0 0 0 / 3%) 6.6501px 6.6501px 5.32008px 0px, rgb(0 0 0 / 4%) 12.5216px 12.5216px 10.0172px 0px, rgb(0 0 0 / 4%) 22.3363px 22.3363px 17.869px 0px, rgb(0 0 0 / 5%) 41.7776px 41.7776px 33.4221px 0px, rgb(0 0 0 / 7%) 100px 100px 80px 0px;\r\n `\"\r\n >\r\n\r\n <div :style=\"`position:absolute; top:0px; left:50%; transform:translateX(-50%) translateY(-50%); padding:15px 15px 10px 15px; border-radius:50%; background:${c5};`\">\r\n <img :width=\"logoSize\" :height=\"logoSize\" :src=\"webLogo\">\r\n </div>\r\n\r\n <div :style=\"`padding:${logoSize/2+contentPadding}px ${contentPadding}px ${contentPadding}px ${contentPadding}px;`\">\r\n\r\n <div style=\"padding-bottom:20px; text-align:center; font-size:1.3rem;\">\r\n {{webName}}\r\n </div>\r\n\r\n <div style=\"display:flex; align-items:stretch;\">\r\n\r\n <div style=\"display:flex; align-items:center; padding:0px 10px; background:rgba(34, 44, 77, 0.9);\">\r\n <WIcon\r\n :icon=\"'mdi-account'\"\r\n :color=\"'#ddd'\"\r\n :colorHover=\"'#eee'\"\r\n :size=\"24\"\r\n ></WIcon>\r\n </div>\r\n\r\n <div style=\"width:100%; padding:5px 10px; background:rgba(34, 44, 77, 0.8);\">\r\n\r\n <div :style=\"`font-size:0.8rem; color:#eee;`\">\r\n {{$t('account')}}\r\n </div>\r\n\r\n <WText\r\n :textColor=\"'#fff'\"\r\n :bottomLineBorderColor=\"'#b6b6b6'\"\r\n :bottomLineBorderColorHover=\"'#ccc'\"\r\n :bottomLineBorderColorFocus=\"'#ddd'\"\r\n v-model=\"account\"\r\n @enter=\"login\"\r\n ></WText>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <div style=\"padding-top:10px\"></div>\r\n\r\n <div style=\"display:flex; align-items:stretch;\">\r\n\r\n <div style=\"display:flex; align-items:center; padding:0px 10px; background:rgba(34, 44, 77, 0.9);\">\r\n <WIcon\r\n :icon=\"'mdi-lock'\"\r\n :color=\"'#ddd'\"\r\n :colorHover=\"'#eee'\"\r\n :size=\"24\"\r\n ></WIcon>\r\n </div>\r\n\r\n <div style=\"width:100%; padding:5px 10px; background:rgba(34, 44, 77, 0.8);\">\r\n\r\n <div :style=\"`font-size:0.8rem; color:#eee;`\">\r\n {{$t('password')}}\r\n </div>\r\n\r\n <WText\r\n :textColor=\"'#fff'\"\r\n :bottomLineBorderColor=\"'#b6b6b6'\"\r\n :bottomLineBorderColorHover=\"'#ccc'\"\r\n :bottomLineBorderColorFocus=\"'#ddd'\"\r\n :rightIcon=\"showPassword ? 'mdi-eye' : 'mdi-eye-off'\"\r\n :rightIconColor=\"'#ddd'\"\r\n :rightIconColorHover=\"'#eee'\"\r\n :rightIconColorFocus=\"'#ddd'\"\r\n :rightIconTooltip=\"showPassword ? $t('toggleToHidePassword') : $t('toggleToShowPassword')\"\r\n :password=\"!showPassword\"\r\n v-model=\"password\"\r\n @click-right=\"showPassword=!showPassword\"\r\n @enter=\"login\"\r\n ></WText>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <div style=\"padding-top:30px\"></div>\r\n\r\n <div style=\"padding:5px 0px; text-align:center;\">\r\n <WButtonChip\r\n :style=\"`opacity:${hasAcPw?1:0.5};`\"\r\n :text=\"$t('login')\"\r\n :textFontSize=\"'1.0rem'\"\r\n :paddingStyle=\"{v:8,h:130}\"\r\n :backgroundColor=\"'rgba(255,255,255,0.5)'\"\r\n :backgroundColorHover=\"'rgba(255,255,255,0.7)'\"\r\n _shadow=\"false\"\r\n :editable=\"hasAcPw\"\r\n @click=\"login\"\r\n ></WButtonChip>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <div style=\"position:absolute; top:10px; right:10px;\">\r\n\r\n <div\r\n style=\"white-space:nowrap;\"\r\n v-if=\"showLangSelect\"\r\n >\r\n <WTextSelect\r\n style=\"width:100px;\"\r\n :items=\"keysLang\"\r\n :value=\"lang\"\r\n @input=\"toggleLang\"\r\n >\r\n <template v-slot:select=\"props\">\r\n {{getLangText(props.item)}}\r\n </template>\r\n <template v-slot:item=\"props\">\r\n {{getLangText(props.item)}}\r\n </template>\r\n </WTextSelect>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport get from 'lodash-es/get.js'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport isDev from 'wsemi/src/isDev.mjs'\r\nimport delay from 'wsemi/src/delay.mjs'\r\nimport waitFun from 'wsemi/src/waitFun.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WText from 'w-component-vue/src/components/WText.vue'\r\nimport WTextSelect from 'w-component-vue/src/components/WTextSelect.vue'\r\nimport WButtonChip from 'w-component-vue/src/components/WButtonChip.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WIcon,\r\n WText,\r\n WTextSelect,\r\n WButtonChip,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n\r\n firstSetting: true,\r\n\r\n showLangSelect: false,\r\n\r\n keysLang: [\r\n 'eng',\r\n 'cht',\r\n ],\r\n kpLangSelect: {\r\n 'eng': 'English',\r\n 'cht': '中文',\r\n },\r\n\r\n logoSize: 120,\r\n\r\n contentWidth: 380,\r\n contentPadding: 30,\r\n\r\n account: '',\r\n\r\n showPassword: false,\r\n password: '',\r\n\r\n //待加入 申請註冊使用者 bbb\r\n\r\n }\r\n },\r\n mounted: function() {\r\n // console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //firstSetting\r\n if (vo.firstSetting) {\r\n // console.log('webInfor', vo.webInfor)\r\n let showLanguage = get(vo, 'webInfor.showLanguage', '')\r\n // console.log('showLanguage', showLanguage)\r\n vo.showLangSelect = showLanguage === 'y'\r\n let language = get(vo, 'webInfor.language', '')\r\n // console.log('language', language)\r\n vo.$ui.setLang(language, 'layout mounted')\r\n vo.firstSetting = false\r\n }\r\n\r\n },\r\n computed: {\r\n\r\n webName: {\r\n get() {\r\n let vo = this\r\n let c = vo.$t('webName', '')\r\n // console.log('get webName1', c)\r\n if (!isestr(c)) {\r\n c = vo.$t('waitingData', '')\r\n }\r\n // console.log('get webName2', c)\r\n document.title = c //更換網頁title\r\n return c\r\n },\r\n // set(value) {\r\n // return value\r\n // },\r\n },\r\n\r\n webInfor: function() {\r\n let wi = get(this, `$store.state.webInfor`)\r\n return wi\r\n },\r\n\r\n webLogo: function() {\r\n let vo = this\r\n return get(vo, `webInfor.webLogo`, '')\r\n },\r\n\r\n webBackgoundGradientColors: function() {\r\n let vo = this\r\n return get(vo, `webInfor.webBackgoundGradientColors`, [])\r\n },\r\n\r\n c1: function() {\r\n let vo = this\r\n let c = get(vo, 'webBackgoundGradientColors.0', '#fff')\r\n return c\r\n },\r\n\r\n c2: function() {\r\n let vo = this\r\n let c = get(vo, 'webBackgoundGradientColors.1', '#fff')\r\n return c\r\n },\r\n\r\n c3: function() {\r\n let vo = this\r\n let c = get(vo, 'webBackgoundGradientColors.2', '#fff')\r\n return c\r\n },\r\n\r\n c4: function() {\r\n let vo = this\r\n let c = get(vo, 'webBackgoundGradientColors.3', '#fff')\r\n return c\r\n },\r\n\r\n c5: function() {\r\n let vo = this\r\n let c = get(vo, 'webBackgoundGradientColors.4', '#fff')\r\n return c\r\n },\r\n\r\n webKey: function() {\r\n let vo = this\r\n return get(vo, '$store.state.webInfor.webKey', '')\r\n },\r\n\r\n lang: function() {\r\n let vo = this\r\n return get(vo, '$store.state.lang', '')\r\n },\r\n\r\n hasAcPw: function() {\r\n let vo = this\r\n return isestr(vo.account) && isestr(vo.password)\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n getLangText: function(lang) {\r\n // console.log('methods getLangText', lang)\r\n\r\n let vo = this\r\n\r\n let t = get(vo, `kpLangSelect.${lang}`, '')\r\n\r\n return t\r\n },\r\n\r\n toggleLang: function(lang) {\r\n // console.log('methods toggleLang', lang)\r\n\r\n let vo = this\r\n\r\n //setLang\r\n vo.$ui.setLang(lang, 'toggle')\r\n\r\n },\r\n\r\n login: function() {\r\n // console.log('methods login')\r\n\r\n let vo = this\r\n\r\n //view\r\n let view = vo.$ui.getUrlView()\r\n\r\n //login\r\n vo.$ui.login(vo.account, vo.password, { useRedir: view === 'login' })\r\n .then(() => {\r\n\r\n //提交變更viewState前往指定功能頁\r\n vo.$ui.updateViewState(view)\r\n console.log(`login, goto view[${view}] page`)\r\n\r\n })\r\n .catch((err) => {\r\n\r\n //錯誤發生時提交變更viewState返回登入頁\r\n vo.$ui.updateViewState('login')\r\n console.log(`login err[${err}], goto view['login'] page`)\r\n\r\n })\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PageLogin.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./PageLogin.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./PageLogin.vue?vue&type=template&id=48e938f1&scoped=true\"\nimport script from \"./PageLogin.vue?vue&type=script&lang=js\"\nexport * from \"./PageLogin.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48e938f1\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticStyle:{\"height\":\"100svh\",\"background\":\"#f5f5f5\"}},[_c('div',{style:(`height:${_vm.heightToolbar}px; overflow-y:hidden; padding:0px 10px; background:#fff; border-bottom:1px solid #ccc; display:flex; align-items:center;`)},[_c('div',{staticStyle:{\"padding-left\":\"5px\"}},[_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[(_vm.webLogo)?_c('div',{staticStyle:{\"padding-right\":\"10px\",\"display\":\"flex\",\"align-items\":\"center\"}},[_c('img',{staticStyle:{\"width\":\"36px\",\"min-width\":\"36px\",\"height\":\"36px\"},attrs:{\"src\":_vm.webLogo}})]):_vm._e(),_c('div',{staticStyle:{\"white-space\":\"nowrap\"}},[_c('div',{staticStyle:{\"font-size\":\"1.2rem\",\"color\":\"#000\"}},[_vm._v(_vm._s(_vm.webName))]),_c('div',{staticStyle:{\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(_vm._s(_vm.$t('webDescription')))])])])]),_c('div',{staticStyle:{\"width\":\"100%\"}}),(_vm.showLangSelect)?_c('div',{staticStyle:{\"padding-right\":\"10px\",\"white-space\":\"nowrap\"}},[_c('WTextSelect',{staticStyle:{\"width\":\"100px\"},attrs:{\"items\":_vm.keysLang,\"value\":_vm.lang},on:{\"input\":_vm.toggleLang},scopedSlots:_vm._u([{key:\"select\",fn:function(props){return [_vm._v(\" \"+_vm._s(_vm.getLangText(props.item))+\" \")]}},{key:\"item\",fn:function(props){return [_vm._v(\" \"+_vm._s(_vm.getLangText(props.item))+\" \")]}}],null,false,2218956916)})],1):_vm._e(),_c('div',{staticStyle:{\"padding-right\":\"10px\",\"display\":\"flex\",\"align-items\":\"center\"}},[_c('WPopup',{attrs:{\"isolated\":true,\"_show\":\"\",\"_hide\":\"\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"white-space\":\"nowrap\",\"user-select\":\"none\",\"cursor\":\"pointer\"}},[_c('div',{staticStyle:{\"padding-top\":\"2px\"}},[_c('WIcon',{attrs:{\"icon\":_vm.mdiAccountCircleOutline,\"size\":20}})],1),_c('div',{staticStyle:{\"padding-left\":\"5px\",\"font-size\":\"0.85rem\"}},[_vm._v(\" \"+_vm._s(_vm.userName)+\" \")])])]},proxy:true},{key:\"content\",fn:function(){return [_c('div',{staticStyle:{\"padding\":\"10px\"}},[_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\",\"white-space\":\"nowrap\",\"user-select\":\"none\",\"cursor\":\"pointer\"},on:{\"click\":_vm.logout}},[_c('div',{staticStyle:{\"padding-top\":\"2px\"}},[_c('WIcon',{attrs:{\"icon\":_vm.mdiLogoutVariant,\"size\":18}})],1),_c('div',{staticStyle:{\"padding-left\":\"5px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('logout'))+\" \")])])])]},proxy:true}])})],1)]),_c('div',{style:(`height:calc( 100% - ${_vm.heightToolbar}px );`)},[_c('LayoutContent')],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},on:{\"domresize\":_vm.resize}},[(_vm.syncState)?[_c('WDrawer',{style:(`height:${_vm.panelHeight}px; width:100%;`),attrs:{\"drawerWidth\":_vm.drawerWidth,\"drawerWidthMin\":_vm.drawerWidthMin,\"drawerWidthMax\":_vm.drawerWidthMax,\"mode\":'from-left',\"dragDrawerWidth\":true,\"autoSwitchToHide\":true,\"autoSwitchToShow\":true,\"autoSwitchToFloat\":true,\"switchWidth\":_vm.drawerWidth*2.3},on:{\"update:drawerWidth\":function($event){_vm.drawerWidth=$event},\"update:drawer-width\":function($event){_vm.drawerWidth=$event}},scopedSlots:_vm._u([{key:\"drawer\",fn:function(props){return [_c('div',{style:(`height:${props.height}px; background:#fff; position:relative;`)},[_c('WListVertical',{staticStyle:{\"height\":\"100%\"},attrs:{\"items\":_vm.menus,\"itemActive\":_vm.menuActive,\"item-text-color\":'#222',\"item-text-color-hover\":'#444',\"item-text-color-active\":'#EF6C00',\"item-icon-color\":'#222',\"item-icon-color-hover\":'#444',\"item-icon-color-active\":'#EF6C00',\"item-background-color\":'#fff',\"item-background-color-hover\":'#f2f2f2',\"item-background-color-active\":'#FFF3E0',\"paddingStyle\":{v:15,h:15}},on:{\"click\":(menu)=>{_vm.menuKey=menu.key}}}),(_vm.drawer)?_c('div',{style:(`position:absolute; top:2px; right:4px;`)},[_c('WButtonCircle',{attrs:{\"paddingStyle\":{h:2,v:2},\"icon\":_vm.mdiArrowLeftBoldHexagonOutline,\"iconSize\":20,\"backgroundColor\":'rgba(255,255,255,0.1)',\"backgroundColorHover\":'rgba(255,255,255,0.4)',\"backgroundColorFocus\":'rgba(255,255,255,0.7)',\"borderColor\":'transparent',\"borderColorHover\":'transparent',\"borderColorFocus\":'transparent',\"_tooltip\":\"$t('menuTreeHide')\",\"shadow\":false},on:{\"click\":function($event){_vm.drawer=false}}})],1):_vm._e()],1)]}},{key:\"content\",fn:function(props){return [_c('div',{style:(`height:${props.height}px; width:${props.width}px; position:relative;`)},[[(_vm.menuKey==='mmStaInfor')?_c('LayoutContentStaInfor'):_vm._e(),(_vm.menuKey==='mmUserInfor')?_c('LayoutContentUserInfor'):_vm._e(),(_vm.menuKey==='mmUsersList')?_c('LayoutContentUsers'):_vm._e(),(_vm.menuKey==='mmTokensList')?_c('LayoutContentTokens'):_vm._e(),(_vm.menuKey==='mmIpsList')?_c('LayoutContentIps'):_vm._e()],(!_vm.drawer)?_c('div',{style:(`position:absolute; top:3px; left:5px;`)},[_c('WButtonCircle',{attrs:{\"paddingStyle\":{h:2,v:2},\"icon\":_vm.mdiArrowRightBoldHexagonOutline,\"iconSize\":20,\"backgroundColor\":'rgba(255,255,255,0.1)',\"backgroundColorHover\":'rgba(255,255,255,0.4)',\"backgroundColorFocus\":'rgba(255,255,255,0.7)',\"borderColor\":'transparent',\"borderColorHover\":'transparent',\"borderColorFocus\":'transparent',\"_tooltip\":\"$t('menuTreeShow')\",\"shadow\":false},on:{\"click\":function($event){_vm.drawer=true}}})],1):_vm._e()],2)]}}],null,false,474508006),model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}})]:_c('div',{staticStyle:{\"padding\":\"20px\",\"font-size\":\"0.9rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"height\":\"100%\"},attrs:{\"changeLang\":_vm.changeLang},on:{\"domresize\":_vm.resizePanel}},[(!_vm.isLoading)?_c('div',{staticStyle:{\"height\":\"100%\",\"background\":\"#f9fafb\",\"overflow-y\":\"auto\"}},[_c('div',{staticStyle:{\"padding\":\"20px 30px\"}},[_c('div',{staticClass:\"mb-8\"},[_c('div',{staticStyle:{\"font-size\":\"1.5rem\",\"font-weight\":\"600\"}},[_vm._v(_vm._s(_vm.$t('statisticsInformation')))]),_c('div',{staticStyle:{\"font-size\":\"0.9rem\",\"color\":\"#6b7280\"}},[_vm._v(_vm._s(_vm.$t('statisticsInformationDescription')))])]),_c('div',{staticClass:\"space-y-8\"},[_c('div',[_c('div',{staticClass:\"pb-1 text-gray-500 flex items-center\"},[_c('i',{staticClass:\"text-2xl mdi mdi-shield-account-outline mr-2\"}),_c('span',{staticClass:\"text-sm\"},[_vm._v(_vm._s(_vm.$t('userGroupInfor')))])]),_c('div',{staticClass:\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-5\"},[_c('div',{staticClass:\"bg-white p-5 rounded-lg shadow-sm border border-gray-200 flex items-center\"},[_vm._m(0),_c('div',{staticClass:\"ml-4\"},[_c('div',{staticClass:\"text-gray-500 text-sm\"},[_vm._v(_vm._s(_vm.$t('totalUsers')))]),_c('div',{staticClass:\"text-2xl font-bold text-gray-900\"},[_vm._v(_vm._s(_vm.userOverview.total || 0))])])]),_c('div',{staticClass:\"bg-white p-5 rounded-lg shadow-sm border border-gray-200 flex items-center\"},[_vm._m(1),_c('div',{staticClass:\"ml-4\"},[_c('div',{staticClass:\"text-gray-500 text-sm\"},[_vm._v(_vm._s(_vm.$t('activeUsers')))]),_c('div',{staticClass:\"text-2xl font-bold text-gray-900\"},[_vm._v(_vm._s(_vm.userOverview.active || 0))])])]),_c('div',{staticClass:\"bg-white p-5 rounded-lg shadow-sm border border-gray-200 flex items-center\"},[_vm._m(2),_c('div',{staticClass:\"ml-4\"},[_c('div',{staticClass:\"text-gray-500 text-sm\"},[_vm._v(_vm._s(_vm.$t('blockedUsers')))]),_c('div',{staticClass:\"text-2xl font-bold text-gray-900\"},[_vm._v(_vm._s(_vm.userOverview.locked || 0))])])]),_c('div',{staticClass:\"bg-white p-5 rounded-lg shadow-sm border border-gray-200 flex items-center\"},[_vm._m(3),_c('div',{staticClass:\"ml-4\"},[_c('div',{staticClass:\"text-gray-500 text-sm\"},[_vm._v(_vm._s(_vm.$t('expiredUsers')))]),_c('div',{staticClass:\"text-2xl font-bold text-gray-900\"},[_vm._v(_vm._s(_vm.userOverview.expired || 0))])])])])]),_c('div',[_c('div',{staticClass:\"pb-1 text-gray-500 flex items-center\"},[_c('i',{staticClass:\"text-2xl mdi mdi-chart-box-outline mr-2\"}),_c('span',{staticClass:\"text-sm\"},[_vm._v(_vm._s(_vm.$t('accessActivityMonitoring')))])]),_c('div',{staticClass:\"grid grid-cols-1 lg:grid-cols-1 gap-6\"},[_c('div',{staticClass:\"bg-white p-5 rounded-lg shadow-sm border border-gray-200\"},[_c('div',{staticClass:\"pb-2 flex items-center font-semibold text-gray-700\"},[_c('i',{staticClass:\"text-4xl mdi mdi-login-variant mr-2 text-purple-600\"}),_c('span',{staticClass:\"text-lg\"},[_vm._v(_vm._s(_vm.$t('userLoginFrequency')))])]),_c('div',{staticClass:\"flex justify-between items-center\"},[_c('div',{staticClass:\"text-xs text-gray-500 mb-4\"},[_vm._v(_vm._s(_vm.$t('last7Days')))]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.timeGroupLogin),expression:\"timeGroupLogin\"}],staticClass:\"border rounded px-2 py-1 text-sm\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.timeGroupLogin=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.updateChartsDebounce]}},_vm._l((_vm.timeGroupOptions),function(v){return _c('option',{key:v,domProps:{\"value\":v}},[_vm._v(_vm._s(_vm.$t(`selectItem${v}`)))])}),0)]),(_vm.optLogin)?_c('WEchartsVueDyn',{staticStyle:{\"width\":\"100%\",\"height\":\"300px\"},attrs:{\"options\":_vm.optLogin}}):_vm._e()],1),_c('div',{staticClass:\"bg-white p-5 rounded-lg shadow-sm border border-gray-200\"},[_c('div',{staticClass:\"pb-2 flex items-center font-semibold text-gray-700\"},[_c('i',{staticClass:\"text-2xl mdi mdi-ticket-confirmation-outline mr-2 text-purple-600\"}),_c('span',{staticClass:\"text-lg\"},[_vm._v(_vm._s(_vm.$t('tokenUsageFrequency')))])]),_c('div',{staticClass:\"flex justify-between items-center\"},[_c('div',{staticClass:\"text-xs text-gray-500 mb-4\"},[_vm._v(_vm._s(_vm.$t('last7Days')))]),_c('div',{staticClass:\"flex items-center space-x-4\"},[_c('div',{staticClass:\"flex items-center\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.showIndividuallyToken),expression:\"showIndividuallyToken\"}],staticClass:\"w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 rounded focus:ring-blue-500\",attrs:{\"id\":\"showIndividuallyToken\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.showIndividuallyToken)?_vm._i(_vm.showIndividuallyToken,null)>-1:(_vm.showIndividuallyToken)},on:{\"change\":[function($event){var $$a=_vm.showIndividuallyToken,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.showIndividuallyToken=$$a.concat([$$v]))}else{$$i>-1&&(_vm.showIndividuallyToken=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.showIndividuallyToken=$$c}},_vm.updateChartsDebounce]}}),_c('label',{staticClass:\"ml-2 text-sm font-medium text-gray-900\",attrs:{\"for\":\"showIndividuallyToken\"}},[_vm._v(_vm._s(_vm.$t('showIndividually')))])]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.timeGroupToken),expression:\"timeGroupToken\"}],staticClass:\"border rounded px-2 py-1 text-sm\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.timeGroupToken=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.updateChartsDebounce]}},_vm._l((_vm.timeGroupOptions),function(v){return _c('option',{key:v,domProps:{\"value\":v}},[_vm._v(_vm._s(_vm.$t(`selectItem${v}`)))])}),0)])]),(_vm.optToken)?_c('WEchartsVueDyn',{staticStyle:{\"width\":\"100%\",\"height\":\"300px\"},attrs:{\"options\":_vm.optToken}}):_vm._e(),(_vm.tokenUsageSummary.length > 0)?_c('div',{staticClass:\"mt-4\"},[_c('div',{staticClass:\"overflow-x-auto relative shadow-md\"},[_c('div',{style:(`${_vm.showAllTokenUsers ? 'max-height:400px; overflow-y:auto;' : ''}`)},[_c('table',{staticClass:\"w-full text-sm text-left text-gray-500 border-collapse\"},[_c('thead',{staticClass:\"text-xs text-gray-700 bg-gray-50 sticky top-0 z-10 shadow-sm\"},[_c('tr',[_c('th',{staticClass:\"py-3 px-6 border border-solid border-gray-200 w-7\",attrs:{\"scope\":\"col\"}},[_vm._v(_vm._s(_vm.$t('numberOrder')))]),_c('th',{staticClass:\"py-3 px-6 border border-solid border-gray-200\",attrs:{\"scope\":\"col\"}},[_vm._v(_vm._s(_vm.$t('username')))]),_c('th',{staticClass:\"py-3 px-6 border border-solid border-gray-200\",attrs:{\"scope\":\"col\"}},[_vm._v(_vm._s(_vm.$t('total')))]),_c('th',{staticClass:\"py-3 px-6 border border-solid border-gray-200\",attrs:{\"scope\":\"col\"}},[_vm._v(_vm._s(_vm.$t('last1Day')))]),_c('th',{staticClass:\"py-3 px-6 border border-solid border-gray-200\",attrs:{\"scope\":\"col\"}},[_vm._v(_vm._s(_vm.$t('last8Hour')))]),_c('th',{staticClass:\"py-3 px-6 border border-solid border-gray-200\",attrs:{\"scope\":\"col\"}},[_vm._v(_vm._s(_vm.$t('last4Hour')))]),_c('th',{staticClass:\"py-3 px-6 border border-solid border-gray-200\",attrs:{\"scope\":\"col\"}},[_vm._v(_vm._s(_vm.$t('last1Hour')))])])]),_c('tbody',_vm._l((_vm.displayTokenUsageSummary),function(item,index){return _c('tr',{key:index,staticClass:\"hover:bg-gray-50 transition-colors\"},[_c('td',{staticClass:\"py-4 px-6 border border-solid border-gray-200 w-7\"},[_vm._v(_vm._s(item.number))]),_c('td',{staticClass:\"py-4 px-6 border border-solid border-gray-200\"},[_vm._v(_vm._s(item.username))]),_c('td',{staticClass:\"py-4 px-6 border border-solid border-gray-200\"},[_vm._v(_vm._s(_vm.formatNumber(item.total)))]),_c('td',{staticClass:\"py-4 px-6 border border-solid border-gray-200\"},[_vm._v(_vm._s(_vm.formatNumber(item.last1d)))]),_c('td',{staticClass:\"py-4 px-6 border border-solid border-gray-200\"},[_vm._v(_vm._s(_vm.formatNumber(item.last8h)))]),_c('td',{staticClass:\"py-4 px-6 border border-solid border-gray-200\"},[_vm._v(_vm._s(_vm.formatNumber(item.last4h)))]),_c('td',{staticClass:\"py-4 px-6 border border-solid border-gray-200\"},[_vm._v(_vm._s(_vm.formatNumber(item.last1h)))])])}),0)])])]),_c('div',{staticClass:\"text-right mt-2\"},[_c('span',{staticClass:\"text-blue-600 hover:underline text-sm cursor-pointer\",on:{\"click\":_vm.toggleShowAllTokenUsers}},[_vm._v(\" \"+_vm._s(_vm.showAllTokenUsers ? _vm.$t('showMax5') : _vm.$t('showAll'))+\" \")])])]):_vm._e()],1),_c('div',{staticClass:\"bg-white p-5 rounded-lg shadow-sm border border-gray-200\"},[_c('div',{staticClass:\"pb-2 flex items-center font-semibold text-gray-700\"},[_c('i',{staticClass:\"text-2xl mdi mdi-access-point-network mr-2 text-purple-600\"}),_c('span',{staticClass:\"text-lg\"},[_vm._v(_vm._s(_vm.$t('ipConnectionFrequency')))])]),_c('div',{staticClass:\"flex justify-between items-center\"},[_c('div',{staticClass:\"text-xs text-gray-500 mb-4\"},[_vm._v(_vm._s(_vm.$t('last7Days')))]),_c('div',{staticClass:\"flex items-center space-x-4\"},[_c('div',{staticClass:\"flex items-center\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.showIndividuallyIp),expression:\"showIndividuallyIp\"}],staticClass:\"w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 rounded focus:ring-blue-500\",attrs:{\"id\":\"showIndividuallyIp\",\"type\":\"checkbox\"},domProps:{\"checked\":Array.isArray(_vm.showIndividuallyIp)?_vm._i(_vm.showIndividuallyIp,null)>-1:(_vm.showIndividuallyIp)},on:{\"change\":[function($event){var $$a=_vm.showIndividuallyIp,$$el=$event.target,$$c=$$el.checked?(true):(false);if(Array.isArray($$a)){var $$v=null,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.showIndividuallyIp=$$a.concat([$$v]))}else{$$i>-1&&(_vm.showIndividuallyIp=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.showIndividuallyIp=$$c}},_vm.updateChartsDebounce]}}),_c('label',{staticClass:\"ml-2 text-sm font-medium text-gray-900\",attrs:{\"for\":\"showIndividuallyIp\"}},[_vm._v(_vm._s(_vm.$t('showIndividually')))])]),_c('select',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.timeGroupIp),expression:\"timeGroupIp\"}],staticClass:\"border rounded px-2 py-1 text-sm\",on:{\"change\":[function($event){var $$selectedVal = Array.prototype.filter.call($event.target.options,function(o){return o.selected}).map(function(o){var val = \"_value\" in o ? o._value : o.value;return val}); _vm.timeGroupIp=$event.target.multiple ? $$selectedVal : $$selectedVal[0]},_vm.updateChartsDebounce]}},_vm._l((_vm.timeGroupOptions),function(v){return _c('option',{key:v,domProps:{\"value\":v}},[_vm._v(_vm._s(_vm.$t(`selectItem${v}`)))])}),0)])]),(_vm.optIp)?_c('WEchartsVueDyn',{staticStyle:{\"width\":\"100%\",\"height\":\"300px\"},attrs:{\"options\":_vm.optIp}}):_vm._e(),(_vm.ipUsageSummary.length > 0)?_c('div',{staticClass:\"mt-4\"},[_c('div',{staticClass:\"overflow-x-auto relative shadow-md\"},[_c('div',{style:(`${_vm.showAllIpUsers ? 'max-height:400px; overflow-y:auto;' : ''}`)},[_c('table',{staticClass:\"w-full text-sm text-left text-gray-500 border-collapse\"},[_c('thead',{staticClass:\"text-xs text-gray-700 bg-gray-50 sticky top-0 z-10 shadow-sm\"},[_c('tr',[_c('th',{staticClass:\"py-3 px-6 border border-solid border-gray-200 w-7\",attrs:{\"scope\":\"col\"}},[_vm._v(_vm._s(_vm.$t('numberOrder')))]),_c('th',{staticClass:\"py-3 px-6 border border-solid border-gray-200\",attrs:{\"scope\":\"col\"}},[_vm._v(_vm._s(_vm.$t('ip')))]),_c('th',{staticClass:\"py-3 px-6 border border-solid border-gray-200\",attrs:{\"scope\":\"col\"}},[_vm._v(_vm._s(_vm.$t('total')))]),_c('th',{staticClass:\"py-3 px-6 border border-solid border-gray-200\",attrs:{\"scope\":\"col\"}},[_vm._v(_vm._s(_vm.$t('last1Day')))]),_c('th',{staticClass:\"py-3 px-6 border border-solid border-gray-200\",attrs:{\"scope\":\"col\"}},[_vm._v(_vm._s(_vm.$t('last8Hour')))]),_c('th',{staticClass:\"py-3 px-6 border border-solid border-gray-200\",attrs:{\"scope\":\"col\"}},[_vm._v(_vm._s(_vm.$t('last4Hour')))]),_c('th',{staticClass:\"py-3 px-6 border border-solid border-gray-200\",attrs:{\"scope\":\"col\"}},[_vm._v(_vm._s(_vm.$t('last1Hour')))])])]),_c('tbody',_vm._l((_vm.displayIpUsageSummary),function(item,index){return _c('tr',{key:index,staticClass:\"hover:bg-gray-50 transition-colors\"},[_c('td',{staticClass:\"py-4 px-6 border border-solid border-gray-200 w-7\"},[_vm._v(_vm._s(item.number))]),_c('td',{staticClass:\"py-4 px-6 border border-solid border-gray-200\"},[_vm._v(_vm._s(item.ip))]),_c('td',{staticClass:\"py-4 px-6 border border-solid border-gray-200\"},[_vm._v(_vm._s(_vm.formatNumber(item.total)))]),_c('td',{staticClass:\"py-4 px-6 border border-solid border-gray-200\"},[_vm._v(_vm._s(_vm.formatNumber(item.last1d)))]),_c('td',{staticClass:\"py-4 px-6 border border-solid border-gray-200\"},[_vm._v(_vm._s(_vm.formatNumber(item.last8h)))]),_c('td',{staticClass:\"py-4 px-6 border border-solid border-gray-200\"},[_vm._v(_vm._s(_vm.formatNumber(item.last4h)))]),_c('td',{staticClass:\"py-4 px-6 border border-solid border-gray-200\"},[_vm._v(_vm._s(_vm.formatNumber(item.last1h)))])])}),0)])])]),_c('div',{staticClass:\"text-right mt-2\"},[_c('span',{staticClass:\"text-blue-600 hover:underline text-sm cursor-pointer\",on:{\"click\":_vm.toggleShowAllIpUsers}},[_vm._v(\" \"+_vm._s(_vm.showAllIpUsers ? _vm.$t('showMax5') : _vm.$t('showAll'))+\" \")])])]):_vm._e()],1)])]),_c('div',[_c('div',{staticClass:\"pb-1 text-gray-500 flex items-center\"},[_c('i',{staticClass:\"text-2xl mdi mdi-monitor-account mr-2\"}),_c('span',{staticClass:\"text-sm\"},[_vm._v(_vm._s(_vm.$t('controlStatus')))])]),_c('div',{staticClass:\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-5\"},[_c('div',{staticClass:\"bg-white p-5 rounded-lg shadow-sm border border-gray-200\"},[_c('div',{staticClass:\"pb-3 flex items-center mb-2\"},[_c('i',{staticClass:\"text-2xl mdi mdi-folder-key-network-outline text-indigo-600 mr-2\"}),_c('div',{staticClass:\"font-semibold text-gray-700\"},[_vm._v(_vm._s(_vm.$t('tokenCharacteristic')))])]),_c('div',{staticClass:\"space-y-2 text-sm\"},[_c('div',{staticClass:\"flex justify-between\"},[_c('span',[_vm._v(_vm._s(_vm.$t('activeTokens'))+\":\")]),_vm._v(\" \"),_c('span',{staticClass:\"font-bold\"},[_vm._v(_vm._s(_vm.tokenStatus.active || 0))])]),_c('div',{staticClass:\"flex justify-between\"},[_c('span',[_vm._v(_vm._s(_vm.$t('createdLast24h'))+\":\")]),_vm._v(\" \"),_c('span',{staticClass:\"font-bold\"},[_vm._v(_vm._s(_vm.tokenStatus.created24h || 0))])]),_c('div',{staticClass:\"flex justify-between\"},[_c('span',[_vm._v(_vm._s(_vm.$t('endingNext24h'))+\":\")]),_vm._v(\" \"),_c('span',{staticClass:\"font-bold\"},[_vm._v(_vm._s(_vm.tokenStatus.ending24h || 0))])]),_c('div',{staticClass:\"flex justify-between\"},[_c('span',[_vm._v(_vm._s(_vm.$t('endedTokens'))+\":\")]),_vm._v(\" \"),_c('span',{staticClass:\"font-bold\"},[_vm._v(_vm._s(_vm.tokenStatus.ended || 0))])])])]),_c('div',{staticClass:\"bg-white p-5 rounded-lg shadow-sm border border-gray-200\"},[_c('div',{staticClass:\"pb-3 flex items-center mb-2\"},[_c('i',{staticClass:\"text-2xl mdi mdi-ip-network-outline text-teal-600 mr-2\"}),_c('div',{staticClass:\"font-semibold text-gray-700\"},[_vm._v(_vm._s(_vm.$t('ipCharacteristic')))])]),_c('div',{staticClass:\"space-y-2 text-sm\"},[_c('div',{staticClass:\"flex justify-between\"},[_c('span',[_vm._v(_vm._s(_vm.$t('conn24h'))+\":\")]),_vm._v(\" \"),_c('span',{staticClass:\"font-bold\"},[_vm._v(_vm._s(_vm.ipCharacteristic.conn24h || 0))])]),_c('div',{staticClass:\"flex justify-between\"},[_c('span',[_vm._v(_vm._s(_vm.$t('blockedIps'))+\":\")]),_vm._v(\" \"),_c('span',{staticClass:\"font-bold\"},[_vm._v(_vm._s(_vm.ipCharacteristic.blocked || 0))])])])])])])])])]):[(_vm.isLoading)?_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")]):_vm._e(),(_vm.errMsg)?_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.errMsg)+\" \")]):_vm._e()]],2)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"bg-blue-100 p-3 rounded-full\"},[_c('i',{staticClass:\"mdi mdi-account-group-outline mdi-24px text-blue-600\"})])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"bg-green-100 p-3 rounded-full\"},[_c('i',{staticClass:\"mdi mdi-account-check-outline mdi-24px text-green-600\"})])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"bg-red-100 p-3 rounded-full\"},[_c('i',{staticClass:\"mdi mdi-account-lock-outline mdi-24px text-red-600\"})])\n},function (){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"bg-yellow-100 p-3 rounded-full\"},[_c('i',{staticClass:\"mdi mdi-account-clock-outline mdi-24px text-yellow-600\"})])\n}]\n\nexport { render, staticRenderFns }","<template>\n <div\n style=\"height:100%;\"\n v-domresize\n @domresize=\"resizePanel\"\n :changeLang=\"changeLang\"\n >\n\n <div\n style=\"height:100%; background:#f9fafb; overflow-y:auto;\"\n v-if=\"!isLoading\"\n >\n\n <div style=\"padding:20px 30px;\">\n\n <!-- 頁面標題 -->\n <div class=\"mb-8\">\n <div style=\"font-size:1.5rem; font-weight:600;\">{{$t('statisticsInformation')}}</div>\n <div style=\"font-size:0.9rem; color:#6b7280;\">{{$t('statisticsInformationDescription')}}</div>\n </div>\n\n <div class=\"space-y-8\">\n\n <!-- 使用者資訊區區塊 -->\n <div>\n <div class=\"pb-1 text-gray-500 flex items-center\">\n <i class=\"text-2xl mdi mdi-shield-account-outline mr-2\"></i>\n <span class=\"text-sm\">{{$t('userGroupInfor')}}</span>\n </div>\n <div class=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-5\">\n\n <div class=\"bg-white p-5 rounded-lg shadow-sm border border-gray-200 flex items-center\">\n <div class=\"bg-blue-100 p-3 rounded-full\">\n <i class=\"mdi mdi-account-group-outline mdi-24px text-blue-600\"></i>\n </div>\n <div class=\"ml-4\">\n <div class=\"text-gray-500 text-sm\">{{$t('totalUsers')}}</div>\n <div class=\"text-2xl font-bold text-gray-900\">{{ userOverview.total || 0 }}</div>\n </div>\n </div>\n\n <div class=\"bg-white p-5 rounded-lg shadow-sm border border-gray-200 flex items-center\">\n <div class=\"bg-green-100 p-3 rounded-full\">\n <i class=\"mdi mdi-account-check-outline mdi-24px text-green-600\"></i>\n </div>\n <div class=\"ml-4\">\n <div class=\"text-gray-500 text-sm\">{{$t('activeUsers')}}</div>\n <div class=\"text-2xl font-bold text-gray-900\">{{ userOverview.active || 0 }}</div>\n </div>\n </div>\n\n <div class=\"bg-white p-5 rounded-lg shadow-sm border border-gray-200 flex items-center\">\n <div class=\"bg-red-100 p-3 rounded-full\">\n <i class=\"mdi mdi-account-lock-outline mdi-24px text-red-600\"></i>\n </div>\n <div class=\"ml-4\">\n <div class=\"text-gray-500 text-sm\">{{$t('blockedUsers')}}</div>\n <div class=\"text-2xl font-bold text-gray-900\">{{ userOverview.locked || 0 }}</div>\n </div>\n </div>\n\n <div class=\"bg-white p-5 rounded-lg shadow-sm border border-gray-200 flex items-center\">\n <div class=\"bg-yellow-100 p-3 rounded-full\">\n <i class=\"mdi mdi-account-clock-outline mdi-24px text-yellow-600\"></i>\n </div>\n <div class=\"ml-4\">\n <div class=\"text-gray-500 text-sm\">{{$t('expiredUsers')}}</div>\n <div class=\"text-2xl font-bold text-gray-900\">{{ userOverview.expired || 0 }}</div>\n </div>\n </div>\n\n </div>\n </div>\n\n\n <!-- 存取活動監測區塊 -->\n <div>\n <div class=\"pb-1 text-gray-500 flex items-center\">\n <i class=\"text-2xl mdi mdi-chart-box-outline mr-2\"></i>\n <span class=\"text-sm\">{{$t('accessActivityMonitoring')}}</span>\n </div>\n <div class=\"grid grid-cols-1 lg:grid-cols-1 gap-6\">\n\n <!-- 使用者登入頻率區塊 -->\n <div class=\"bg-white p-5 rounded-lg shadow-sm border border-gray-200\">\n <div class=\"pb-2 flex items-center font-semibold text-gray-700\">\n <i class=\"text-4xl mdi mdi-login-variant mr-2 text-purple-600\"></i>\n <span class=\"text-lg\">{{$t('userLoginFrequency')}}</span>\n </div>\n <div class=\"flex justify-between items-center\">\n <div class=\"text-xs text-gray-500 mb-4\">{{$t('last7Days')}}</div>\n <select v-model=\"timeGroupLogin\" @change=\"updateChartsDebounce\" class=\"border rounded px-2 py-1 text-sm\">\n <option v-for=\"v in timeGroupOptions\" :key=\"v\" :value=\"v\">{{$t(`selectItem${v}`)}}</option>\n </select>\n </div>\n\n <WEchartsVueDyn\n style=\"width:100%; height:300px;\"\n :options=\"optLogin\"\n v-if=\"optLogin\"\n ></WEchartsVueDyn>\n\n </div>\n\n <!-- 金鑰使用頻率區塊 -->\n <div class=\"bg-white p-5 rounded-lg shadow-sm border border-gray-200\">\n <div class=\"pb-2 flex items-center font-semibold text-gray-700\">\n <i class=\"text-2xl mdi mdi-ticket-confirmation-outline mr-2 text-purple-600\"></i>\n <span class=\"text-lg\">{{$t('tokenUsageFrequency')}}</span>\n </div>\n <div class=\"flex justify-between items-center\">\n <div class=\"text-xs text-gray-500 mb-4\">{{$t('last7Days')}}</div>\n <div class=\"flex items-center space-x-4\">\n <div class=\"flex items-center\">\n <input id=\"showIndividuallyToken\" type=\"checkbox\" v-model=\"showIndividuallyToken\" @change=\"updateChartsDebounce\" class=\"w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 rounded focus:ring-blue-500\">\n <label for=\"showIndividuallyToken\" class=\"ml-2 text-sm font-medium text-gray-900\">{{$t('showIndividually')}}</label>\n </div>\n <select v-model=\"timeGroupToken\" @change=\"updateChartsDebounce\" class=\"border rounded px-2 py-1 text-sm\">\n <option v-for=\"v in timeGroupOptions\" :key=\"v\" :value=\"v\">{{$t(`selectItem${v}`)}}</option>\n </select>\n </div>\n </div>\n\n <WEchartsVueDyn\n style=\"width:100%; height:300px;\"\n :options=\"optToken\"\n v-if=\"optToken\"\n ></WEchartsVueDyn>\n\n <!-- 金鑰對應使用者用量統計 -->\n <div v-if=\"tokenUsageSummary.length > 0\" class=\"mt-4\">\n <div class=\"overflow-x-auto relative shadow-md\">\n <div :style=\"`${showAllTokenUsers ? 'max-height:400px; overflow-y:auto;' : ''}`\">\n <table class=\"w-full text-sm text-left text-gray-500 border-collapse\">\n <thead class=\"text-xs text-gray-700 bg-gray-50 sticky top-0 z-10 shadow-sm\">\n <tr>\n <th scope=\"col\" class=\"py-3 px-6 border border-solid border-gray-200 w-7\">{{$t('numberOrder')}}</th>\n <th scope=\"col\" class=\"py-3 px-6 border border-solid border-gray-200\">{{$t('username')}}</th>\n <th scope=\"col\" class=\"py-3 px-6 border border-solid border-gray-200\">{{$t('total')}}</th>\n <th scope=\"col\" class=\"py-3 px-6 border border-solid border-gray-200\">{{$t('last1Day')}}</th>\n <th scope=\"col\" class=\"py-3 px-6 border border-solid border-gray-200\">{{$t('last8Hour')}}</th>\n <th scope=\"col\" class=\"py-3 px-6 border border-solid border-gray-200\">{{$t('last4Hour')}}</th>\n <th scope=\"col\" class=\"py-3 px-6 border border-solid border-gray-200\">{{$t('last1Hour')}}</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(item, index) in displayTokenUsageSummary\" :key=\"index\" class=\"hover:bg-gray-50 transition-colors\">\n <td class=\"py-4 px-6 border border-solid border-gray-200 w-7\">{{ item.number }}</td>\n <td class=\"py-4 px-6 border border-solid border-gray-200\">{{ item.username }}</td>\n <td class=\"py-4 px-6 border border-solid border-gray-200\">{{ formatNumber(item.total) }}</td>\n <td class=\"py-4 px-6 border border-solid border-gray-200\">{{ formatNumber(item.last1d) }}</td>\n <td class=\"py-4 px-6 border border-solid border-gray-200\">{{ formatNumber(item.last8h) }}</td>\n <td class=\"py-4 px-6 border border-solid border-gray-200\">{{ formatNumber(item.last4h) }}</td>\n <td class=\"py-4 px-6 border border-solid border-gray-200\">{{ formatNumber(item.last1h) }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n <div class=\"text-right mt-2\">\n <span @click=\"toggleShowAllTokenUsers\" class=\"text-blue-600 hover:underline text-sm cursor-pointer\">\n {{ showAllTokenUsers ? $t('showMax5') : $t('showAll') }}\n </span>\n </div>\n </div>\n\n </div>\n\n <!-- IP連線頻率區塊 -->\n <div class=\"bg-white p-5 rounded-lg shadow-sm border border-gray-200\">\n <div class=\"pb-2 flex items-center font-semibold text-gray-700\">\n <i class=\"text-2xl mdi mdi-access-point-network mr-2 text-purple-600\"></i>\n <span class=\"text-lg\">{{$t('ipConnectionFrequency')}}</span>\n </div>\n <div class=\"flex justify-between items-center\">\n <div class=\"text-xs text-gray-500 mb-4\">{{$t('last7Days')}}</div>\n <div class=\"flex items-center space-x-4\">\n <div class=\"flex items-center\">\n <input id=\"showIndividuallyIp\" type=\"checkbox\" v-model=\"showIndividuallyIp\" @change=\"updateChartsDebounce\" class=\"w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 rounded focus:ring-blue-500\">\n <label for=\"showIndividuallyIp\" class=\"ml-2 text-sm font-medium text-gray-900\">{{$t('showIndividually')}}</label>\n </div>\n <select v-model=\"timeGroupIp\" @change=\"updateChartsDebounce\" class=\"border rounded px-2 py-1 text-sm\">\n <option v-for=\"v in timeGroupOptions\" :key=\"v\" :value=\"v\">{{$t(`selectItem${v}`)}}</option>\n </select>\n </div>\n </div>\n\n <WEchartsVueDyn\n style=\"width:100%; height:300px;\"\n :options=\"optIp\"\n v-if=\"optIp\"\n ></WEchartsVueDyn>\n\n <!-- IP 使用量統計 -->\n <div v-if=\"ipUsageSummary.length > 0\" class=\"mt-4\">\n <div class=\"overflow-x-auto relative shadow-md\">\n <div :style=\"`${showAllIpUsers ? 'max-height:400px; overflow-y:auto;' : ''}`\">\n <table class=\"w-full text-sm text-left text-gray-500 border-collapse\">\n <thead class=\"text-xs text-gray-700 bg-gray-50 sticky top-0 z-10 shadow-sm\">\n <tr>\n <th scope=\"col\" class=\"py-3 px-6 border border-solid border-gray-200 w-7\">{{$t('numberOrder')}}</th>\n <th scope=\"col\" class=\"py-3 px-6 border border-solid border-gray-200\">{{$t('ip')}}</th>\n <th scope=\"col\" class=\"py-3 px-6 border border-solid border-gray-200\">{{$t('total')}}</th>\n <th scope=\"col\" class=\"py-3 px-6 border border-solid border-gray-200\">{{$t('last1Day')}}</th>\n <th scope=\"col\" class=\"py-3 px-6 border border-solid border-gray-200\">{{$t('last8Hour')}}</th>\n <th scope=\"col\" class=\"py-3 px-6 border border-solid border-gray-200\">{{$t('last4Hour')}}</th>\n <th scope=\"col\" class=\"py-3 px-6 border border-solid border-gray-200\">{{$t('last1Hour')}}</th>\n </tr>\n </thead>\n <tbody>\n <tr v-for=\"(item, index) in displayIpUsageSummary\" :key=\"index\" class=\"hover:bg-gray-50 transition-colors\">\n <td class=\"py-4 px-6 border border-solid border-gray-200 w-7\">{{ item.number }}</td>\n <td class=\"py-4 px-6 border border-solid border-gray-200\">{{ item.ip }}</td>\n <td class=\"py-4 px-6 border border-solid border-gray-200\">{{ formatNumber(item.total) }}</td>\n <td class=\"py-4 px-6 border border-solid border-gray-200\">{{ formatNumber(item.last1d) }}</td>\n <td class=\"py-4 px-6 border border-solid border-gray-200\">{{ formatNumber(item.last8h) }}</td>\n <td class=\"py-4 px-6 border border-solid border-gray-200\">{{ formatNumber(item.last4h) }}</td>\n <td class=\"py-4 px-6 border border-solid border-gray-200\">{{ formatNumber(item.last1h) }}</td>\n </tr>\n </tbody>\n </table>\n </div>\n </div>\n <div class=\"text-right mt-2\">\n <span @click=\"toggleShowAllIpUsers\" class=\"text-blue-600 hover:underline text-sm cursor-pointer\">\n {{ showAllIpUsers ? $t('showMax5') : $t('showAll') }}\n </span>\n </div>\n </div>\n\n </div>\n\n </div>\n </div>\n\n\n <!-- 管控狀態區塊 -->\n <div>\n <div class=\"pb-1 text-gray-500 flex items-center\">\n <i class=\"text-2xl mdi mdi-monitor-account mr-2\"></i>\n <span class=\"text-sm\">{{$t('controlStatus')}}</span>\n </div>\n <div class=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-5\">\n\n <!-- 活躍 Token -->\n <div class=\"bg-white p-5 rounded-lg shadow-sm border border-gray-200\">\n <div class=\"pb-3 flex items-center mb-2\">\n <i class=\"text-2xl mdi mdi-folder-key-network-outline text-indigo-600 mr-2\"></i>\n <div class=\"font-semibold text-gray-700\">{{$t('tokenCharacteristic')}}</div>\n </div>\n <div class=\"space-y-2 text-sm\">\n <div class=\"flex justify-between\"><span>{{$t('activeTokens')}}:</span> <span class=\"font-bold\">{{ tokenStatus.active || 0 }}</span></div>\n <div class=\"flex justify-between\"><span>{{$t('createdLast24h')}}:</span> <span class=\"font-bold\">{{ tokenStatus.created24h || 0 }}</span></div>\n <div class=\"flex justify-between\"><span>{{$t('endingNext24h')}}:</span> <span class=\"font-bold\">{{ tokenStatus.ending24h || 0 }}</span></div>\n <div class=\"flex justify-between\"><span>{{$t('endedTokens')}}:</span> <span class=\"font-bold\">{{ tokenStatus.ended || 0 }}</span></div>\n </div>\n </div>\n\n <!-- IP 管控 -->\n <div class=\"bg-white p-5 rounded-lg shadow-sm border border-gray-200\">\n <div class=\"pb-3 flex items-center mb-2\">\n <i class=\"text-2xl mdi mdi-ip-network-outline text-teal-600 mr-2\"></i>\n <div class=\"font-semibold text-gray-700\">{{$t('ipCharacteristic')}}</div>\n </div>\n <div class=\"space-y-2 text-sm\">\n <div class=\"flex justify-between\"><span>{{$t('conn24h')}}:</span> <span class=\"font-bold\">{{ ipCharacteristic.conn24h || 0 }}</span></div>\n <div class=\"flex justify-between\"><span>{{$t('blockedIps')}}:</span> <span class=\"font-bold\">{{ ipCharacteristic.blocked || 0 }}</span></div>\n </div>\n </div>\n\n </div>\n </div>\n\n </div>\n\n </div>\n\n </div>\n <template v-else>\n <div\n style=\"padding:10px 15px; font-size:0.8rem;\"\n v-if=\"isLoading\"\n >\n {{$t('waitingData')}}\n </div>\n <div\n style=\"padding:10px 15px; font-size:0.8rem;\"\n v-if=\"errMsg\"\n >\n {{errMsg}}\n </div>\n </template>\n\n </div>\n</template>\n\n<script>\nimport ot from 'dayjs'\nimport get from 'lodash-es/get.js'\nimport each from 'lodash-es/each.js'\nimport map from 'lodash-es/map.js'\nimport size from 'lodash-es/size.js'\nimport keys from 'lodash-es/keys.js'\nimport groupBy from 'lodash-es/groupBy.js'\nimport sumBy from 'lodash-es/sumBy.js'\nimport cloneDeep from 'lodash-es/cloneDeep.js'\nimport omit from 'lodash-es/omit.js'\nimport reduce from 'lodash-es/reduce.js'\nimport toPairs from 'lodash-es/toPairs.js'\nimport sortBy from 'lodash-es/sortBy.js'\nimport reverse from 'lodash-es/reverse.js'\nimport isearr from 'wsemi/src/isearr.mjs'\nimport strright from 'wsemi/src/strright.mjs'\nimport haskey from 'wsemi/src/haskey.mjs'\nimport debounce from 'wsemi/src/debounce.mjs'\nimport WEchartsVueDyn from 'w-component-vue/src/components/WEchartsVueDyn.vue'\n\n\nexport default {\n components: {\n WEchartsVueDyn,\n },\n props: {\n },\n data: function() {\n return {\n\n dbc: debounce(300),\n\n panelWidth: 100,\n panelHeight: 100,\n\n isLoading: true,\n errMsg: '',\n\n userOverview: {},\n\n freqLogin: [],\n freqToken: [],\n freqIp: [],\n\n tokenStatus: {},\n ipCharacteristic: {},\n\n timeGroupLogin: '1hr',\n timeGroupToken: '1hr',\n timeGroupIp: '1hr',\n timeGroupOptions: ['1hr', '4hr', '8hr', '1day'],\n\n optLogin: null,\n optToken: null,\n optIp: null,\n\n showIndividuallyToken: false,\n showIndividuallyIp: false,\n\n tokenUsageSummary: [],\n showAllTokenUsers: false,\n\n ipUsageSummary: [],\n showAllIpUsers: false,\n\n }\n },\n mounted: function() {\n // console.log('mounted')\n\n let vo = this\n\n //getAndRelaData\n vo.getAndRelaData()\n\n },\n computed: {\n\n webInfor: function() {\n let wi = get(this, `$store.state.webInfor`)\n return wi\n },\n\n userToken: function() {\n let vo = this\n return get(vo, `$store.state.userToken`)\n },\n\n lang: function() {\n let vo = this\n return get(vo, `$store.state.lang`, '')\n },\n\n changeLang: function() {\n let vo = this\n let lang = vo.lang\n vo.updateChartsDebounce(lang)\n return ''\n },\n\n displayTokenUsageSummary: function() {\n let vo = this\n if (vo.showAllTokenUsers) {\n return vo.tokenUsageSummary\n }\n return vo.tokenUsageSummary.slice(0, 5)\n },\n\n displayIpUsageSummary: function() {\n let vo = this\n if (vo.showAllIpUsers) {\n return vo.ipUsageSummary\n }\n return vo.ipUsageSummary.slice(0, 5)\n },\n\n },\n methods: {\n\n resizePanel: function(msg) {\n // console.log('methods resizePanel', msg)\n\n let vo = this\n\n //panelWidth, panelHeight\n vo.panelWidth = msg.snew.offsetWidth\n vo.panelHeight = msg.snew.offsetHeight\n\n },\n\n genOpt: function(title, arr, keysPick, timeGroup = '1hr') {\n let vo = this\n\n //check\n if (size(arr) === 0) {\n return null\n }\n\n //keysPick to array\n if (!isearr(keysPick)) {\n keysPick = [keysPick]\n }\n\n //timeGroup\n let dataProc = arr\n if (timeGroup !== '1hr') {\n\n //groupHours\n let groupHours = 4\n if (timeGroup === '8hr') {\n groupHours = 8\n }\n else if (timeGroup === '1day') {\n groupHours = 24\n }\n\n //gs\n let gs = groupBy(arr, (v) => {\n let t = ot(v.time)\n let h = t.hour()\n let hGroup = Math.floor(h / groupHours)\n let tNew = t.startOf('day').add(hGroup * groupHours, 'hour')\n return tNew.format()\n })\n // console.log('gs', gs)\n\n //groupBy\n dataProc = map(gs, (vs, time) => {\n let r = {\n time,\n data: {},\n }\n each(keysPick, (k) => {\n r.data[k] = sumBy(vs, `data.${k}`)\n })\n return r\n })\n // console.log('dataProc', dataProc)\n\n }\n\n //colors\n let colors = [\n '#3b82f6', // blue-500\n '#ef4444', // red-500\n '#10b981', // emerald-500\n '#f97316', // orange-500\n '#8b5cf6', // violet-500\n '#6366f1', // indigo-500\n '#eab308', // yellow-500\n '#ec4899', // pink-500\n '#14b8a6', // teal-500\n '#a855f7', // purple-500\n ]\n function getColor(k) {\n return colors[k % colors.length]\n }\n\n //kpKey\n let kpKey = {\n count: 'count',\n attempt: 'countAttempt',\n success: 'countSuccess',\n error: 'countError',\n }\n\n //getName\n let getName = (valueKey) => {\n let langKey = ''\n if (haskey(kpKey, valueKey)) {\n langKey = kpKey[valueKey]\n }\n else {\n langKey = valueKey\n }\n let name = vo.$t(langKey)\n // console.log(`langKey[${langKey}]`, `name[${name}]`)\n return name\n }\n\n //series\n let totalBarsPerGroup = size(keysPick)\n let barWidthPercent = Math.floor(100 / (totalBarsPerGroup * 1.5)) + '%' // 自動算出適合的 barWidth\n let series = map(keysPick, (valueKey, k) => {\n let name = getName(valueKey)\n // console.log('valueKey', valueKey, 'name', name)\n let color = getColor(k)\n return {\n name,\n type: 'bar',\n barWidth: barWidthPercent, // 改為動態 barWidth\n data: map(dataProc, item => get(item, `data.${valueKey}`, 0)),\n itemStyle: {\n color,\n },\n emphasis: {\n focus: 'series'\n },\n }\n })\n // console.log(title, 'series', series)\n\n //formatX\n let formatX = 'MM/DD'\n if (strright(timeGroup, 2) === 'hr') {\n formatX = 'MM/DD\\nHH:mm'\n }\n\n //opt\n let opt = {\n title: {\n text: title,\n show: false, // 不顯示標題,由組件的HTML提供\n },\n tooltip: {\n trigger: 'axis',\n axisPointer: {\n type: 'shadow'\n }\n },\n grid: {\n left: '3%',\n right: '4%',\n bottom: '3%',\n containLabel: true\n },\n legend: {\n show: true,\n },\n xAxis: [\n {\n type: 'category',\n data: map(dataProc, item => ot(item.time).format(formatX)),\n axisTick: {\n alignWithLabel: true\n }\n }\n ],\n yAxis: [\n {\n type: 'value'\n }\n ],\n series,\n }\n return opt\n },\n\n grStaUserSummary: async function() {\n let vo = this\n\n //token\n let token = vo.userToken\n\n //getStaUserSummary\n await vo.$fapi.getStaUserSummary(token)\n .then((res) => {\n vo.userOverview = res\n })\n .catch((err) => {\n console.log('getStaUserSummary catch', err)\n })\n\n },\n\n grStaTokenSummary: async function() {\n let vo = this\n\n //token\n let token = vo.userToken\n\n //getStaTokenSummary\n await vo.$fapi.getStaTokenSummary(token)\n .then((res) => {\n vo.tokenStatus = res\n })\n .catch((err) => {\n console.log('getStaTokenSummary catch', err)\n })\n\n },\n\n grStaIpSummary: async function() {\n let vo = this\n\n //token\n let token = vo.userToken\n\n //getStaIpSummary\n await vo.$fapi.getStaIpSummary(token)\n .then((res) => {\n vo.ipCharacteristic = res\n })\n .catch((err) => {\n console.log('getStaIpSummary catch', err)\n })\n\n },\n\n grStaUserAccountLogin: async function() {\n let vo = this\n\n //token\n let token = vo.userToken\n\n //getStaUserAccountLogin\n await vo.$fapi.getStaUserAccountLogin(token)\n .then((res) => {\n // console.log('getStaUserAccountLogin(freqLogin)', cloneDeep(res))\n vo.freqLogin = res\n vo.optLogin = vo.genOpt(vo.$t('userLoginFrequency'), vo.freqLogin, ['attempt', 'success', 'error'], vo.timeGroupLogin)\n })\n .catch((err) => {\n console.log('getStaUserAccountLogin catch', err)\n })\n\n },\n\n grStaToken: async function() {\n let vo = this\n\n //token\n let token = vo.userToken\n\n //getStaToken\n await vo.$fapi.getStaToken(token)\n .then((res) => {\n // console.log('getStaToken(freqToken)', cloneDeep(res))\n vo.freqToken = res\n vo.updateCharts()\n vo.calculateTokenUsageSummary(res)\n })\n .catch((err) => {\n console.log('getStaToken catch', err)\n })\n\n },\n\n grStaIp: async function name(params) {\n let vo = this\n\n //token\n let token = vo.userToken\n\n //getStaIp\n await vo.$fapi.getStaIp(token)\n .then((res) => {\n // console.log('getStaIp(freqIp)', cloneDeep(res))\n vo.freqIp = res\n vo.updateCharts()\n vo.calculateIpUsageSummary(res)\n })\n .catch((err) => {\n console.log('getStaIp catch', err)\n })\n\n },\n\n getAndRelaData: async function() {\n let vo = this\n\n vo.isLoading = true\n vo.errMsg = ''\n vo.grStaUserSummary() //isLoading僅針對grStaUserSummary之取得成功與否做判斷\n .catch((err) => {\n console.log(err)\n vo.errMsg = vo.$t('getDataError')\n })\n .finally(() => {\n vo.isLoading = false\n })\n\n vo.grStaTokenSummary()\n .catch(() => { })\n\n vo.grStaIpSummary()\n .catch(() => { })\n\n vo.grStaUserAccountLogin()\n .catch(() => { })\n\n vo.grStaToken()\n .catch(() => { })\n\n vo.grStaIp()\n .catch(() => { })\n\n },\n\n updateCharts: function() {\n let vo = this\n\n //optLogin\n vo.optLogin = vo.genOpt(vo.$t('userLoginFrequency'), vo.freqLogin, ['attempt', 'success', 'error'], vo.timeGroupLogin)\n\n //optToken\n let dataToken = get(vo.freqToken, '0.data')\n let ksToken = keys(dataToken)\n if (!vo.showIndividuallyToken) {\n ksToken = ['count']\n }\n vo.optToken = vo.genOpt(vo.$t('tokenUsageFrequency'), vo.freqToken, ksToken, vo.timeGroupToken)\n\n //optIp\n let dataIp = get(vo.freqIp, '0.data')\n let ksIp = keys(dataIp)\n if (!vo.showIndividuallyIp) {\n ksIp = ['count']\n }\n vo.optIp = vo.genOpt(vo.$t('ipConnectionFrequency'), vo.freqIp, ksIp, vo.timeGroupIp)\n\n },\n\n updateChartsDebounce: function() {\n let vo = this\n vo.dbc(() => {\n vo.updateCharts()\n })\n },\n\n calculateTokenUsageSummary: function(tokenFrequency) {\n let vo = this\n\n // 先取得所有使用者\n let users = reduce(tokenFrequency, (acc, entry) => {\n let userData = omit(get(entry, 'data', {}), 'count')\n each(keys(userData), (username) => {\n if (!haskey(acc, username)) {\n acc[username] = {\n username,\n total: 0,\n last1d: 0,\n last8h: 0,\n last4h: 0,\n last1h: 0,\n }\n }\n })\n return acc\n }, {})\n\n // now\n let now = ot()\n\n // 迭代 tokenFrequency 進行計算\n each(tokenFrequency, (entry) => {\n let t = ot(entry.time)\n let diff1d = now.diff(t, 'hour') <= 24\n let diff8h = now.diff(t, 'hour') <= 8\n let diff4h = now.diff(t, 'hour') <= 4\n let diff1h = now.diff(t, 'hour') <= 1\n let userData = omit(get(entry, 'data', {}), 'count')\n each(userData, (value, username) => {\n if (haskey(users, username)) {\n users[username].total += value\n if (diff1d) {\n users[username].last1d += value\n }\n if (diff8h) {\n users[username].last8h += value\n }\n if (diff4h) {\n users[username].last4h += value\n }\n if (diff1h) {\n users[username].last1h += value\n }\n }\n })\n })\n\n // 將物件轉換為陣列並排序\n let sortedSummary = toPairs(users)\n sortedSummary = map(sortedSummary, (v) => v[1]) //只取value\n sortedSummary = sortBy(sortedSummary, 'total')\n sortedSummary = reverse(sortedSummary)\n sortedSummary = map(sortedSummary, (v, k) => {\n v.number = k + 1\n return v\n })\n // console.log('sortedSummary', sortedSummary)\n\n vo.tokenUsageSummary = sortedSummary\n },\n\n toggleShowAllTokenUsers: function() {\n let vo = this\n vo.showAllTokenUsers = !vo.showAllTokenUsers\n },\n\n calculateIpUsageSummary: function(ipFrequency) {\n let vo = this\n\n // 先取得所有IP\n let ips = reduce(ipFrequency, (acc, entry) => {\n let ipData = omit(get(entry, 'data', {}), 'count')\n each(keys(ipData), (ip) => {\n if (!haskey(acc, ip)) {\n acc[ip] = {\n ip,\n total: 0,\n last1d: 0,\n last8h: 0,\n last4h: 0,\n last1h: 0,\n }\n }\n })\n return acc\n }, {})\n\n // now\n let now = ot()\n\n // 迭代 ipFrequency 進行計算\n each(ipFrequency, (entry) => {\n let t = ot(entry.time)\n let diff1d = now.diff(t, 'hour') <= 24\n let diff8h = now.diff(t, 'hour') <= 8\n let diff4h = now.diff(t, 'hour') <= 4\n let diff1h = now.diff(t, 'hour') <= 1\n let ipData = omit(get(entry, 'data', {}), 'count')\n each(ipData, (value, ip) => {\n if (haskey(ips, ip)) {\n ips[ip].total += value\n if (diff1d) {\n ips[ip].last1d += value\n }\n if (diff8h) {\n ips[ip].last8h += value\n }\n if (diff4h) {\n ips[ip].last4h += value\n }\n if (diff1h) {\n ips[ip].last1h += value\n }\n }\n })\n })\n\n // 將物件轉換為陣列並排序\n let sortedSummary = toPairs(ips)\n sortedSummary = map(sortedSummary, (v) => v[1]) //只取value\n sortedSummary = sortBy(sortedSummary, 'total')\n sortedSummary = reverse(sortedSummary)\n sortedSummary = map(sortedSummary, (v, k) => {\n v.number = k + 1\n return v\n })\n // console.log('sortedSummary', sortedSummary)\n\n vo.ipUsageSummary = sortedSummary\n },\n\n toggleShowAllIpUsers: function() {\n let vo = this\n vo.showAllIpUsers = !vo.showAllIpUsers\n },\n\n formatNumber: function(num) {\n if (num === null || num === undefined) {\n return 0\n }\n return num.toLocaleString()\n },\n\n }\n}\n</script>\n\n<style scoped>\n@media (min-width: 640px) {\n .sm\\:grid-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n}\n@media (min-width: 1024px) {\n .lg\\:grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); }\n .lg\\:grid-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }\n}\n</style>\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentStaInfor.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentStaInfor.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContentStaInfor.vue?vue&type=template&id=1a72f126&scoped=true\"\nimport script from \"./LayoutContentStaInfor.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContentStaInfor.vue?vue&type=script&lang=js\"\nimport style0 from \"./LayoutContentStaInfor.vue?vue&type=style&index=0&id=1a72f126&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a72f126\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"height\":\"100%\"},on:{\"domresize\":_vm.resizePanel}},[(!_vm.isLoading && !_vm.errMsg)?_c('div',{staticStyle:{\"height\":\"100%\",\"background\":\"#fff\",\"overflow-y\":\"auto\"}},[_c('div',{staticStyle:{\"padding\":\"40px\"}},[_c('div',{staticStyle:{\"display\":\"flex\",\"align-items\":\"center\"}},[(false)?_c('div',{staticStyle:{\"display\":\"inline-block\",\"padding\":\"0px\",\"_border\":\"1px solid #ddd\",\"border-radius\":\"50%\"}},[_c('svg',{attrs:{\"xmlns\":\"http://www.w3.org/2000/svg\",\"width\":\"120\",\"height\":\"120\",\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"fill\":\"currentColor\",\"d\":\"M6.196 17.485q1.275-.918 2.706-1.451Q10.332 15.5 12 15.5t3.098.534t2.706 1.45q.99-1.025 1.593-2.42Q20 13.667 20 12q0-3.325-2.337-5.663T12 4T6.337 6.338T4 12q0 1.667.603 3.064q.603 1.396 1.593 2.42m5.805-4.984q-1.264 0-2.133-.868T9 9.501t.868-2.133T12 6.5t2.132.868T15 9.5t-.868 2.132t-2.131.868M12 21q-1.883 0-3.525-.701t-2.858-1.916t-1.916-2.858T3 12t.701-3.525t1.916-2.858q1.216-1.215 2.858-1.916T12 3t3.525.701t2.858 1.916t1.916 2.858T21 12t-.701 3.525t-1.916 2.858q-1.216 1.215-2.858 1.916T12 21m0-1q1.383 0 2.721-.484q1.338-.483 2.313-1.324q-.974-.783-2.255-1.237T12 16.5t-2.789.445t-2.246 1.247q.975.84 2.314 1.324T12 20m0-8.5q.842 0 1.421-.579T14 9.5t-.579-1.421T12 7.5t-1.421.579T10 9.5t.579 1.421T12 11.5m0 6.75\"}})])]):_vm._e(),(_vm.userLogo)?_c('div',{staticStyle:{\"display\":\"inline-block\",\"padding\":\"0px\",\"_border\":\"1px solid #ddd\",\"border-radius\":\"50%\"}},[_c('img',{staticStyle:{\"width\":\"120px\",\"height\":\"120px\"},attrs:{\"src\":_vm.userLogo}})]):_vm._e(),_c('div',{staticStyle:{\"padding-left\":\"15px\"}},[_c('div',{staticStyle:{\"font-size\":\"3.0rem\"}},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'name'))+\" \")]),_c('div',{staticStyle:{\"margin-top\":\"-5px\",\"padding-left\":\"2px\",\"font-size\":\"1.5rem\"}},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'account'))+\" \")])])]),_c('div',{staticClass:\"pt-6 space-y-8\"},[_c('div',[_c('div',{staticClass:\"mb-2 text-xs text-gray-500\"},[_vm._v(_vm._s(_vm.$t('userStatus')))]),_c('div',{staticClass:\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}]},[_vm._v(\" \"+_vm._s(_vm.$t('isBlocked'))+\" \")]),_c('div',{class:`status-${_vm.isBlocked?'danger':'success'} flex items-center p-3 rounded-lg`},[_c('i',{class:`mdi ${_vm.isBlocked?'mdi-lock':'mdi-lock-open-variant'} mdi-24px mr-3 flex-shrink-0`}),_c('div',[_c('div',{staticClass:\"font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.isBlocked?_vm.$t('isBlockedY'):_vm.$t('isBlockedN'))+\" \")]),_c('div',{class:`text-xs text-${_vm.isBlocked?'red':'green'}-800/80`},[_vm._v(\" \"+_vm._s(_vm.isBlocked ? _vm.timeBlockedToDay==='' ? _vm.$t('unknow') : _vm.$t('to')+' '+_vm.timeBlockedToDay : _vm.$t('isBlockedNormalStatus'))+\" \")])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}]},[_vm._v(\" \"+_vm._s(_vm.$t('isExpired'))+\" \"+_vm._s(_vm.$t('timeExpired'))+\" \")]),_c('div',{class:`status-${_vm.isExpired?'danger':'success'} flex items-center p-3 rounded-lg`},[_c('i',{class:`mdi ${_vm.isExpired?'mdi-calendar-lock':'mdi-calendar-check'} mdi-24px mr-3 flex-shrink-0`}),_c('div',[_c('div',{staticClass:\"font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.isExpired?_vm.$t('isExpiredY'):_vm.$t('isExpiredN'))+\" \")]),_c('div',{class:`text-xs text-${_vm.isExpired?'red':'green'}-800/80`},[_vm._v(\" \"+_vm._s(_vm.isExpired ? _vm.$t('isExpiredDeny') : _vm.timeExpiredToDay==='' ? _vm.$t('isExpiredNever') : _vm.$t('to')+' '+_vm.timeExpiredToDay)+\" \")])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}]},[_vm._v(\" \"+_vm._s(_vm.$t('isVerified'))+\" \"+_vm._s(_vm.$t('timeVerified'))+\" \")]),_c('div',{class:`status-${_vm.isVerified?'success':'danger'} flex items-center p-3 rounded-lg`},[_c('i',{class:`mdi ${_vm.isVerified?'mdi-check-decagram':'mdi-alert-decagram-outline'} mdi-24px mr-3 flex-shrink-0`}),_c('div',[_c('div',{staticClass:\"font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.isVerified?_vm.$t('isVerifiedY'):_vm.$t('isVerifiedN'))+\" \")]),_c('div',{class:`text-xs text-${_vm.isVerified?'green':'red'}-800/80`},[_vm._v(\" \"+_vm._s(_vm.isVerified ? _vm.timeVerifiedToDay==='' ? _vm.$t('unknow') : _vm.$t('at')+' '+_vm.timeVerifiedToDay : _vm.$t('isVerifiedWaiting'))+\" \")])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}]},[_vm._v(\" \"+_vm._s(_vm.$t('isActive'))+\" \")]),_c('div',{class:`status-${_vm.$ui.gv(_vm.user,'isActive','')==='y'?'success':'danger'} flex items-center p-3 rounded-lg`},[_c('i',{class:`mdi ${_vm.$ui.gv(_vm.user,'isActive','')==='y'?'mdi-toggle-switch':'mdi-toggle-switch-off-outline'} mdi-24px mr-3 flex-shrink-0`}),_c('div',[_c('div',{staticClass:\"font-semibold\"},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'isActive','')==='y'?_vm.$t('isActiveY'):_vm.$t('isActiveN'))+\" \")]),_c('div',{class:`text-xs text-${_vm.$ui.gv(_vm.user,'isActive','')==='y'?'green':'red'}-800/80`},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'isActive','')==='y'?_vm.$t('isActiveMsgY'):_vm.$t('isActiveMsgN'))+\" \")])])])])]),_c('div',[_c('div',{staticClass:\"grid grid-cols-1 md:grid-cols-2 gap-x-8 gap-y-6 pt-6 border-t border-gray-200\"},[_c('div',{staticClass:\"flex items-start gap-3\"},[_c('i',{staticClass:\"mdi mdi-account-circle text-gray-400 mdi-20px mt-1 flex-shrink-0\"}),_c('div',[_c('div',{staticClass:\"text-sm text-gray-500\"},[_vm._v(_vm._s(_vm.$t('account')))]),_c('div',{staticClass:\"text-base font-medium text-gray-900\"},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'account'))+\" \")])])]),_c('div',{staticClass:\"flex items-start gap-3\"},[_c('i',{staticClass:\"mdi mdi-comment-text-outline text-gray-400 mdi-20px mt-1 flex-shrink-0\"}),_c('div',[_c('div',{staticClass:\"text-sm text-gray-500\"},[_vm._v(_vm._s(_vm.$t('description')))]),_c('div',{staticClass:\"text-base font-medium text-gray-900\"},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'description'))+\" \")])])]),_c('div',{staticClass:\"flex items-start gap-3\"},[_c('i',{staticClass:\"mdi mdi-email-outline text-gray-400 mdi-20px mt-1 flex-shrink-0\"}),_c('div',[_c('div',{staticClass:\"text-sm text-gray-500\"},[_vm._v(_vm._s(_vm.$t('email')))]),_c('div',{staticClass:\"inline-block text-base bg-gray-100 mt-1 px-2 py-1 rounded-md text-gray-700 break-all text-sm\"},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'email'))+\" \")])])]),_c('div',{staticClass:\"flex items-start gap-3\"},[_c('i',{staticClass:\"mdi mdi-source-branch text-gray-400 mdi-20px mt-1 flex-shrink-0\"}),_c('div',[_c('div',{staticClass:\"text-sm text-gray-500\"},[_vm._v(_vm._s(_vm.$t('from')))]),_c('div',{staticClass:\"inline-block text-base bg-gray-100 mt-1 px-2 py-1 rounded-md text-gray-700 break-all text-sm\"},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'from'))+\" \")])])]),_c('div',{staticClass:\"flex items-start gap-3\"},[_c('i',{staticClass:\"mdi mdi-id-card text-gray-400 mdi-20px mt-1 flex-shrink-0\"}),_c('div',[_c('div',{staticClass:\"text-sm text-gray-500\"},[_vm._v(_vm._s(_vm.$t('userRole')))]),_c('div',{staticClass:\"inline-block text-base bg-blue-100 mt-1 px-2 py-1 rounded-md text-blue-700 break-all text-sm\"},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'isAdmin','')==='y'?_vm.$t('userRoleAdmin'):_vm.$t('userRoleGeneral'))+\" \")])])]),_c('div',{staticClass:\"flex items-start gap-3 md:col-span-2\"},[_c('i',{staticClass:\"mdi mdi-link-variant text-gray-400 mdi-20px mt-1 flex-shrink-0\"}),_c('div',[_c('div',{staticClass:\"text-sm text-gray-500\"},[_vm._v(_vm._s(_vm.$t('redir')))]),_c('div',{staticClass:\"inline-block text-base bg-gray-100 mt-1 px-2 py-1 rounded-md text-gray-700 break-all text-sm\"},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'redir'))+\" \")])])])])])]),(false)?_c('div',[_c('WPanelLabelItem',{staticStyle:{\"padding\":\"5px 0px\"},attrs:{\"label\":_vm.$t('account')},scopedSlots:_vm._u([{key:\"item\",fn:function(){return [_c('div',{staticStyle:{\"font-size\":\"0.9rem\"}},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'account'))+\" \")])]},proxy:true}],null,false,148492502)}),_c('WPanelLabelItem',{staticStyle:{\"padding\":\"5px 0px\"},attrs:{\"label\":_vm.$t('description')},scopedSlots:_vm._u([{key:\"item\",fn:function(){return [_c('div',{staticStyle:{\"font-size\":\"0.9rem\"}},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'description'))+\" \")])]},proxy:true}],null,false,1009840657)}),_c('WPanelLabelItem',{staticStyle:{\"padding\":\"5px 0px\"},attrs:{\"label\":_vm.$t('email')},scopedSlots:_vm._u([{key:\"item\",fn:function(){return [_c('div',{staticStyle:{\"font-size\":\"0.9rem\"}},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'email'))+\" \")])]},proxy:true}],null,false,16056411)}),_c('WPanelLabelItem',{staticStyle:{\"padding\":\"5px 0px\"},attrs:{\"label\":_vm.$t('from')},scopedSlots:_vm._u([{key:\"item\",fn:function(){return [_c('div',{staticStyle:{\"font-size\":\"0.9rem\"}},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'from'))+\" \")])]},proxy:true}],null,false,958058977)}),_c('WPanelLabelItem',{staticStyle:{\"padding\":\"5px 0px\"},attrs:{\"label\":_vm.$t('isAdmin')},scopedSlots:_vm._u([{key:\"item\",fn:function(){return [_c('div',{staticStyle:{\"font-size\":\"0.9rem\"}},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'isAdmin','')==='y'?_vm.$t('isAdminY'):_vm.$t('isAdminN'))+\" \")])]},proxy:true}],null,false,1266723288)}),_c('WPanelLabelItem',{staticStyle:{\"padding\":\"5px 0px\"},attrs:{\"label\":_vm.$t('isVerified')},scopedSlots:_vm._u([{key:\"item\",fn:function(){return [_c('div',{staticStyle:{\"font-size\":\"0.9rem\"}},[_vm._v(\" \"+_vm._s(_vm.isVerified?_vm.$t('isVerifiedY'):_vm.$t('isVerifiedN'))+\" \")])]},proxy:true}],null,false,533929442)}),_c('WPanelLabelItem',{staticStyle:{\"padding\":\"5px 0px\"},attrs:{\"label\":_vm.$t('timeVerified')},scopedSlots:_vm._u([{key:\"item\",fn:function(){return [_c('div',{staticStyle:{\"font-size\":\"0.9rem\"}},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'timeVerified'))+\" \")])]},proxy:true}],null,false,1188770180)}),_c('WPanelLabelItem',{staticStyle:{\"padding\":\"5px 0px\"},attrs:{\"label\":_vm.$t('isExpired')},scopedSlots:_vm._u([{key:\"item\",fn:function(){return [_c('div',{staticStyle:{\"font-size\":\"0.9rem\"}},[_vm._v(\" \"+_vm._s(_vm.isExpired?_vm.$t('isExpiredY'):_vm.$t('isExpiredN'))+\" \")])]},proxy:true}],null,false,967424019)}),_c('WPanelLabelItem',{staticStyle:{\"padding\":\"5px 0px\"},attrs:{\"label\":_vm.$t('timeExpired')},scopedSlots:_vm._u([{key:\"item\",fn:function(){return [_c('div',{staticStyle:{\"font-size\":\"0.9rem\"}},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'timeExpired'))+\" \")])]},proxy:true}],null,false,1288958773)}),_c('WPanelLabelItem',{staticStyle:{\"padding\":\"5px 0px\"},attrs:{\"label\":_vm.$t('isBlocked')},scopedSlots:_vm._u([{key:\"item\",fn:function(){return [_c('div',{staticStyle:{\"font-size\":\"0.9rem\"}},[_vm._v(\" \"+_vm._s(_vm.isBlocked?_vm.$t('isBlockedY'):_vm.$t('isBlockedN'))+\" \")])]},proxy:true}],null,false,831769548)}),_c('WPanelLabelItem',{staticStyle:{\"padding\":\"5px 0px\"},attrs:{\"label\":_vm.$t('userTimeBlocked')},scopedSlots:_vm._u([{key:\"item\",fn:function(){return [_c('div',{staticStyle:{\"font-size\":\"0.9rem\"}},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'timeBlocked'))+\" \")])]},proxy:true}],null,false,849975018)}),_c('WPanelLabelItem',{staticStyle:{\"padding\":\"5px 0px\"},attrs:{\"label\":_vm.$t('redir')},scopedSlots:_vm._u([{key:\"item\",fn:function(){return [_c('div',{staticStyle:{\"font-size\":\"0.9rem\"}},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'redir'))+\" \")])]},proxy:true}],null,false,405815327)}),_c('WPanelLabelItem',{staticStyle:{\"padding\":\"5px 0px\"},attrs:{\"label\":_vm.$t('isActive')},scopedSlots:_vm._u([{key:\"item\",fn:function(){return [_c('div',{staticStyle:{\"font-size\":\"0.9rem\"}},[_vm._v(\" \"+_vm._s(_vm.$ui.gv(_vm.user,'isActive','')==='y'?_vm.$t('isActiveY'):_vm.$t('isActiveN'))+\" \")])]},proxy:true}],null,false,2004945851)})],1):_vm._e()])]):[(_vm.isLoading)?_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")]):_vm._e(),(_vm.errMsg)?_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.errMsg)+\" \")]):_vm._e()]],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n style=\"height:100%;\"\r\n v-domresize\r\n @domresize=\"resizePanel\"\r\n >\r\n\r\n <div\r\n style=\"height:100%; background:#fff; overflow-y:auto;\"\r\n v-if=\"!isLoading && !errMsg\"\r\n >\r\n\r\n <div style=\"padding:40px;\">\r\n\r\n\r\n <div style=\"display:flex; align-items:center;\">\r\n\r\n <div style=\"display:inline-block; padding:0px; _border:1px solid #ddd; border-radius:50%;\" v-if=\"false\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"120\" height=\"120\" viewBox=\"0 0 24 24\"><path fill=\"currentColor\" d=\"M6.196 17.485q1.275-.918 2.706-1.451Q10.332 15.5 12 15.5t3.098.534t2.706 1.45q.99-1.025 1.593-2.42Q20 13.667 20 12q0-3.325-2.337-5.663T12 4T6.337 6.338T4 12q0 1.667.603 3.064q.603 1.396 1.593 2.42m5.805-4.984q-1.264 0-2.133-.868T9 9.501t.868-2.133T12 6.5t2.132.868T15 9.5t-.868 2.132t-2.131.868M12 21q-1.883 0-3.525-.701t-2.858-1.916t-1.916-2.858T3 12t.701-3.525t1.916-2.858q1.216-1.215 2.858-1.916T12 3t3.525.701t2.858 1.916t1.916 2.858T21 12t-.701 3.525t-1.916 2.858q-1.216 1.215-2.858 1.916T12 21m0-1q1.383 0 2.721-.484q1.338-.483 2.313-1.324q-.974-.783-2.255-1.237T12 16.5t-2.789.445t-2.246 1.247q.975.84 2.314 1.324T12 20m0-8.5q.842 0 1.421-.579T14 9.5t-.579-1.421T12 7.5t-1.421.579T10 9.5t.579 1.421T12 11.5m0 6.75\"/></svg>\r\n </div>\r\n\r\n <div\r\n style=\"display:inline-block; padding:0px; _border:1px solid #ddd; border-radius:50%;\"\r\n v-if=\"userLogo\"\r\n >\r\n <img style=\"width:120px; height:120px;\" :src=\"userLogo\" />\r\n </div>\r\n\r\n <div style=\"padding-left:15px;\">\r\n\r\n <div style=\"font-size:3.0rem;\">\r\n {{$ui.gv(user,'name')}}\r\n </div>\r\n\r\n <div style=\"margin-top:-5px; padding-left:2px; font-size:1.5rem;\">\r\n {{$ui.gv(user,'account')}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div class=\"pt-6 space-y-8\">\r\n\r\n <!-- 帳號狀態區塊:RWD 網格佈局,會根據螢幕寬度自動調整欄數 -->\r\n <div>\r\n\r\n <div class=\"mb-2 text-xs text-gray-500\">{{$t('userStatus')}}</div>\r\n\r\n <div class=\"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4\">\r\n\r\n <!-- 帳號封鎖 -->\r\n <div v-show=\"false\">\r\n {{$t('isBlocked')}}\r\n </div>\r\n <div :class=\"`status-${isBlocked?'danger':'success'} flex items-center p-3 rounded-lg`\">\r\n <i :class=\"`mdi ${isBlocked?'mdi-lock':'mdi-lock-open-variant'} mdi-24px mr-3 flex-shrink-0`\"></i>\r\n <div>\r\n <div class=\"font-semibold\">\r\n {{isBlocked?$t('isBlockedY'):$t('isBlockedN')}}\r\n </div>\r\n <div :class=\"`text-xs text-${isBlocked?'red':'green'}-800/80`\">\r\n {{\r\n isBlocked\r\n ?\r\n timeBlockedToDay===''\r\n ?\r\n $t('unknow')\r\n :\r\n $t('to')+' '+timeBlockedToDay\r\n :\r\n $t('isBlockedNormalStatus')\r\n }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- 帳號過期 -->\r\n <div v-show=\"false\">\r\n {{$t('isExpired')}}\r\n {{$t('timeExpired')}}\r\n </div>\r\n <div :class=\"`status-${isExpired?'danger':'success'} flex items-center p-3 rounded-lg`\">\r\n <i :class=\"`mdi ${isExpired?'mdi-calendar-lock':'mdi-calendar-check'} mdi-24px mr-3 flex-shrink-0`\"></i>\r\n <div>\r\n <div class=\"font-semibold\">\r\n {{isExpired?$t('isExpiredY'):$t('isExpiredN')}}\r\n </div>\r\n <div :class=\"`text-xs text-${isExpired?'red':'green'}-800/80`\">\r\n {{\r\n isExpired\r\n ?\r\n $t('isExpiredDeny')\r\n :\r\n timeExpiredToDay===''\r\n ?\r\n $t('isExpiredNever')\r\n :\r\n $t('to')+' '+timeExpiredToDay\r\n }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- 帳號驗證 -->\r\n <div v-show=\"false\">\r\n {{$t('isVerified')}}\r\n {{$t('timeVerified')}}\r\n </div>\r\n <div :class=\"`status-${isVerified?'success':'danger'} flex items-center p-3 rounded-lg`\">\r\n <i :class=\"`mdi ${isVerified?'mdi-check-decagram':'mdi-alert-decagram-outline'} mdi-24px mr-3 flex-shrink-0`\"></i>\r\n <div>\r\n <div class=\"font-semibold\">\r\n {{isVerified?$t('isVerifiedY'):$t('isVerifiedN')}}\r\n </div>\r\n <div :class=\"`text-xs text-${isVerified?'green':'red'}-800/80`\">\r\n {{\r\n isVerified\r\n ?\r\n timeVerifiedToDay===''\r\n ?\r\n $t('unknow')\r\n :\r\n $t('at')+' '+timeVerifiedToDay\r\n :\r\n $t('isVerifiedWaiting')\r\n }}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- 帳號有效 -->\r\n <div v-show=\"false\">\r\n {{$t('isActive')}}\r\n </div>\r\n <div :class=\"`status-${$ui.gv(user,'isActive','')==='y'?'success':'danger'} flex items-center p-3 rounded-lg`\">\r\n <i :class=\"`mdi ${$ui.gv(user,'isActive','')==='y'?'mdi-toggle-switch':'mdi-toggle-switch-off-outline'} mdi-24px mr-3 flex-shrink-0`\"></i>\r\n <div>\r\n <div class=\"font-semibold\">\r\n {{$ui.gv(user,'isActive','')==='y'?$t('isActiveY'):$t('isActiveN')}}\r\n </div>\r\n <div :class=\"`text-xs text-${$ui.gv(user,'isActive','')==='y'?'green':'red'}-800/80`\">\r\n {{$ui.gv(user,'isActive','')==='y'?$t('isActiveMsgY'):$t('isActiveMsgN')}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 詳細資訊區塊:同樣採用 RWD 網格佈局 -->\r\n <div>\r\n\r\n <div class=\"grid grid-cols-1 md:grid-cols-2 gap-x-8 gap-y-6 pt-6 border-t border-gray-200\">\r\n\r\n <!-- 帳號 -->\r\n <div class=\"flex items-start gap-3\">\r\n <i class=\"mdi mdi-account-circle text-gray-400 mdi-20px mt-1 flex-shrink-0\"></i>\r\n <div>\r\n <div class=\"text-sm text-gray-500\">{{$t('account')}}</div>\r\n <div class=\"text-base font-medium text-gray-900\">\r\n {{$ui.gv(user,'account')}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- 描述 -->\r\n <div class=\"flex items-start gap-3\">\r\n <i class=\"mdi mdi-comment-text-outline text-gray-400 mdi-20px mt-1 flex-shrink-0\"></i>\r\n <div>\r\n <div class=\"text-sm text-gray-500\">{{$t('description')}}</div>\r\n <div class=\"text-base font-medium text-gray-900\">\r\n {{$ui.gv(user,'description')}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- 電子郵件 -->\r\n <div class=\"flex items-start gap-3\">\r\n <i class=\"mdi mdi-email-outline text-gray-400 mdi-20px mt-1 flex-shrink-0\"></i>\r\n <div>\r\n <div class=\"text-sm text-gray-500\">{{$t('email')}}</div>\r\n <div class=\"inline-block text-base bg-gray-100 mt-1 px-2 py-1 rounded-md text-gray-700 break-all text-sm\">\r\n {{$ui.gv(user,'email')}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- 來源 -->\r\n <div class=\"flex items-start gap-3\">\r\n <i class=\"mdi mdi-source-branch text-gray-400 mdi-20px mt-1 flex-shrink-0\"></i>\r\n <div>\r\n <div class=\"text-sm text-gray-500\">{{$t('from')}}</div>\r\n <div class=\"inline-block text-base bg-gray-100 mt-1 px-2 py-1 rounded-md text-gray-700 break-all text-sm\">\r\n {{$ui.gv(user,'from')}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- 身份 -->\r\n <div class=\"flex items-start gap-3\">\r\n <i class=\"mdi mdi-id-card text-gray-400 mdi-20px mt-1 flex-shrink-0\"></i>\r\n <div>\r\n <div class=\"text-sm text-gray-500\">{{$t('userRole')}}</div>\r\n <div class=\"inline-block text-base bg-blue-100 mt-1 px-2 py-1 rounded-md text-blue-700 break-all text-sm\">\r\n {{$ui.gv(user,'isAdmin','')==='y'?$t('userRoleAdmin'):$t('userRoleGeneral')}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <!-- 登入後轉址 -->\r\n <div class=\"flex items-start gap-3 md:col-span-2\">\r\n <i class=\"mdi mdi-link-variant text-gray-400 mdi-20px mt-1 flex-shrink-0\"></i>\r\n <div>\r\n <div class=\"text-sm text-gray-500\">{{$t('redir')}}</div>\r\n <div class=\"inline-block text-base bg-gray-100 mt-1 px-2 py-1 rounded-md text-gray-700 break-all text-sm\">\r\n {{$ui.gv(user,'redir')}}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n\r\n <div v-if=\"false\">\r\n\r\n <WPanelLabelItem\r\n style=\"padding:5px 0px;\"\r\n :label=\"$t('account')\"\r\n >\r\n <template v-slot:item>\r\n\r\n <div style=\"font-size:0.9rem;\">\r\n {{$ui.gv(user,'account')}}\r\n </div>\r\n\r\n <!-- <WText\r\n :value=\"'Adelina'\"\r\n :text-font-size=\"'0.85rem'\"\r\n ></WText> -->\r\n </template>\r\n </WPanelLabelItem>\r\n\r\n <WPanelLabelItem\r\n style=\"padding:5px 0px;\"\r\n :label=\"$t('description')\"\r\n >\r\n <template v-slot:item>\r\n\r\n <div style=\"font-size:0.9rem;\">\r\n {{$ui.gv(user,'description')}}\r\n </div>\r\n\r\n <!-- <WText\r\n :value=\"'Adelina'\"\r\n :text-font-size=\"'0.85rem'\"\r\n ></WText> -->\r\n </template>\r\n </WPanelLabelItem>\r\n\r\n <WPanelLabelItem\r\n style=\"padding:5px 0px;\"\r\n :label=\"$t('email')\"\r\n >\r\n <template v-slot:item>\r\n\r\n <div style=\"font-size:0.9rem;\">\r\n {{$ui.gv(user,'email')}}\r\n </div>\r\n\r\n <!-- <WText\r\n :value=\"'Adelina'\"\r\n :text-font-size=\"'0.85rem'\"\r\n ></WText> -->\r\n </template>\r\n </WPanelLabelItem>\r\n\r\n <WPanelLabelItem\r\n style=\"padding:5px 0px;\"\r\n :label=\"$t('from')\"\r\n >\r\n <template v-slot:item>\r\n\r\n <div style=\"font-size:0.9rem;\">\r\n {{$ui.gv(user,'from')}}\r\n </div>\r\n\r\n <!-- <WText\r\n :value=\"'Adelina'\"\r\n :text-font-size=\"'0.85rem'\"\r\n ></WText> -->\r\n </template>\r\n </WPanelLabelItem>\r\n\r\n <WPanelLabelItem\r\n style=\"padding:5px 0px;\"\r\n :label=\"$t('isAdmin')\"\r\n >\r\n <template v-slot:item>\r\n\r\n <div style=\"font-size:0.9rem;\">\r\n {{$ui.gv(user,'isAdmin','')==='y'?$t('isAdminY'):$t('isAdminN')}}\r\n </div>\r\n\r\n <!-- <WText\r\n :value=\"'Adelina'\"\r\n :text-font-size=\"'0.85rem'\"\r\n ></WText> -->\r\n </template>\r\n </WPanelLabelItem>\r\n\r\n <WPanelLabelItem\r\n style=\"padding:5px 0px;\"\r\n :label=\"$t('isVerified')\"\r\n >\r\n <template v-slot:item>\r\n\r\n <div style=\"font-size:0.9rem;\">\r\n {{isVerified?$t('isVerifiedY'):$t('isVerifiedN')}}\r\n </div>\r\n\r\n <!-- <WText\r\n :value=\"'Adelina'\"\r\n :text-font-size=\"'0.85rem'\"\r\n ></WText> -->\r\n </template>\r\n </WPanelLabelItem>\r\n\r\n <WPanelLabelItem\r\n style=\"padding:5px 0px;\"\r\n :label=\"$t('timeVerified')\"\r\n >\r\n <template v-slot:item>\r\n\r\n <div style=\"font-size:0.9rem;\">\r\n {{$ui.gv(user,'timeVerified')}}\r\n </div>\r\n\r\n <!-- <WText\r\n :value=\"'Adelina'\"\r\n :text-font-size=\"'0.85rem'\"\r\n ></WText> -->\r\n </template>\r\n </WPanelLabelItem>\r\n\r\n <WPanelLabelItem\r\n style=\"padding:5px 0px;\"\r\n :label=\"$t('isExpired')\"\r\n >\r\n <template v-slot:item>\r\n\r\n <div style=\"font-size:0.9rem;\">\r\n {{isExpired?$t('isExpiredY'):$t('isExpiredN')}}\r\n </div>\r\n\r\n <!-- <WText\r\n :value=\"'Adelina'\"\r\n :text-font-size=\"'0.85rem'\"\r\n ></WText> -->\r\n </template>\r\n </WPanelLabelItem>\r\n\r\n <WPanelLabelItem\r\n style=\"padding:5px 0px;\"\r\n :label=\"$t('timeExpired')\"\r\n >\r\n <template v-slot:item>\r\n\r\n <div style=\"font-size:0.9rem;\">\r\n {{$ui.gv(user,'timeExpired')}}\r\n </div>\r\n\r\n <!-- <WText\r\n :value=\"'Adelina'\"\r\n :text-font-size=\"'0.85rem'\"\r\n ></WText> -->\r\n </template>\r\n </WPanelLabelItem>\r\n\r\n <WPanelLabelItem\r\n style=\"padding:5px 0px;\"\r\n :label=\"$t('isBlocked')\"\r\n >\r\n <template v-slot:item>\r\n\r\n <div style=\"font-size:0.9rem;\">\r\n {{isBlocked?$t('isBlockedY'):$t('isBlockedN')}}\r\n </div>\r\n\r\n <!-- <WText\r\n :value=\"'Adelina'\"\r\n :text-font-size=\"'0.85rem'\"\r\n ></WText> -->\r\n </template>\r\n </WPanelLabelItem>\r\n\r\n <WPanelLabelItem\r\n style=\"padding:5px 0px;\"\r\n :label=\"$t('userTimeBlocked')\"\r\n >\r\n <template v-slot:item>\r\n\r\n <div style=\"font-size:0.9rem;\">\r\n {{$ui.gv(user,'timeBlocked')}}\r\n </div>\r\n\r\n <!-- <WText\r\n :value=\"'Adelina'\"\r\n :text-font-size=\"'0.85rem'\"\r\n ></WText> -->\r\n </template>\r\n </WPanelLabelItem>\r\n\r\n <WPanelLabelItem\r\n style=\"padding:5px 0px;\"\r\n :label=\"$t('redir')\"\r\n >\r\n <template v-slot:item>\r\n\r\n <div style=\"font-size:0.9rem;\">\r\n {{$ui.gv(user,'redir')}}\r\n </div>\r\n\r\n <!-- <WText\r\n :value=\"'Adelina'\"\r\n :text-font-size=\"'0.85rem'\"\r\n ></WText> -->\r\n </template>\r\n </WPanelLabelItem>\r\n\r\n <WPanelLabelItem\r\n style=\"padding:5px 0px;\"\r\n :label=\"$t('isActive')\"\r\n >\r\n <template v-slot:item>\r\n\r\n <div style=\"font-size:0.9rem;\">\r\n {{$ui.gv(user,'isActive','')==='y'?$t('isActiveY'):$t('isActiveN')}}\r\n </div>\r\n\r\n <!-- <WText\r\n :value=\"'Adelina'\"\r\n :text-font-size=\"'0.85rem'\"\r\n ></WText> -->\r\n </template>\r\n </WPanelLabelItem>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n </div>\r\n <template v-else>\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-if=\"isLoading\"\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-if=\"errMsg\"\r\n >\r\n {{errMsg}}\r\n </div>\r\n </template>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiAccountCircleOutline } from '@mdi/js/mdi.js'\r\nimport ot from 'dayjs'\r\nimport get from 'lodash-es/get.js'\r\nimport istimemsTZ from 'wsemi/src/istimemsTZ.mjs'\r\nimport WPanelLabelItem from 'w-component-vue/src/components/WPanelLabelItem.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WPanelLabelItem,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiAccountCircleOutline,\r\n // mdiAccountPlusOutline,\r\n // mdiCheckboxMarkedCircle,\r\n // mdiChessRook,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n // groupInforHeight: 100,\r\n\r\n isLoading: true,\r\n errMsg: '',\r\n isOperatable: true,\r\n // isModified: false,\r\n\r\n user: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n let vo = this\r\n\r\n //isLoading, errMsg\r\n vo.isLoading = true\r\n vo.errMsg = ''\r\n\r\n //token\r\n let token = vo.userToken\r\n // console.log('token', token)\r\n\r\n //getUserByToken\r\n vo.$fapi.getUserByToken(token)\r\n .then((res) => {\r\n // console.log(res)\r\n // if (Math.random() < 0.5) {\r\n // res.timeBlocked = '2026-01-01T00:00:00.000+08:00'\r\n // }\r\n // if (Math.random() < 0.5) {\r\n // res.timeExpired = '2020-01-01T00:00:00.000+08:00'\r\n // }\r\n // if (Math.random() < 0.5) {\r\n // res.timeVerified = ''\r\n // }\r\n // if (Math.random() < 0.5) {\r\n // res.isActive = 'n'\r\n // }\r\n vo.user = res\r\n })\r\n .catch((err) => {\r\n console.log(err)\r\n vo.errMsg = vo.$t('getDataError')\r\n })\r\n .finally(() => {\r\n vo.isLoading = false\r\n })\r\n\r\n },\r\n computed: {\r\n\r\n userToken: function() {\r\n let vo = this\r\n return get(vo, `$store.state.userToken`)\r\n },\r\n\r\n userLogo: function() {\r\n let vo = this\r\n return get(vo, `$store.state.webInfor.userLogo`, '')\r\n },\r\n\r\n isVerified: function() {\r\n let vo = this\r\n\r\n //user\r\n let user = get(vo, 'user')\r\n\r\n //getIsVerified\r\n let b = vo.$s.getIsVerified(user)\r\n\r\n return b\r\n\r\n // //timeVerified\r\n // let timeVerified = get(vo, 'user.timeVerified', '')\r\n // // console.log('timeVerified', timeVerified)\r\n\r\n // // //check\r\n // // if (istimemsTZ(timeVerified)) {\r\n // // return true //有驗證時間, 代表已驗證\r\n // // }\r\n\r\n // // //tt\r\n // // let tt = ot(timeVerified, 'YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n // // // console.log('tt', tt)\r\n\r\n // // //tn\r\n // // let tn = ot()\r\n\r\n // // //tds\r\n // // let tds = tt.diff(tn, 'second')\r\n // // // console.log('tds', tds)\r\n\r\n // // //check\r\n // // if (tds > 0) {\r\n // // return false\r\n // // }\r\n\r\n // return istimemsTZ(timeVerified) //有驗證時間, 代表已驗證\r\n },\r\n\r\n timeVerifiedToDay: function() {\r\n let vo = this\r\n\r\n //timeVerified\r\n let timeVerified = get(vo, 'user.timeVerified', '')\r\n // console.log('timeVerified', timeVerified)\r\n\r\n //check\r\n if (!istimemsTZ(timeVerified)) {\r\n return '' //無驗證時間, 代表未驗證\r\n }\r\n\r\n //tt\r\n let tt = ot(timeVerified, 'YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n // console.log('tt', tt)\r\n\r\n //t\r\n let t = tt.format('YYYY-MM-DD')\r\n\r\n return t\r\n },\r\n\r\n isExpired: function() {\r\n let vo = this\r\n\r\n //user\r\n let user = get(vo, 'user')\r\n\r\n //getIsExpired\r\n let b = vo.$s.getIsExpired(user)\r\n\r\n return b\r\n\r\n // //timeExpired\r\n // let timeExpired = get(vo, 'user.timeExpired', '')\r\n // // console.log('timeExpired', timeExpired)\r\n\r\n // //check\r\n // if (!istimemsTZ(timeExpired)) {\r\n // return false //無過期時間, 代表未過期\r\n // }\r\n\r\n // // //tt\r\n // // let tt = ot(timeExpired, 'YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n // // // console.log('tt', tt)\r\n\r\n // //tn\r\n // let tn = ot().format('YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n\r\n // // //tds\r\n // // let tds = tt.diff(tn, 'second')\r\n // // // console.log('tds', tds)\r\n\r\n // // //check\r\n // // if (tn > timeExpired) {\r\n // // return true\r\n // // }\r\n\r\n // return tn >= timeExpired //現在時間>=過期時間, 代表已過期\r\n },\r\n\r\n timeExpiredToDay: function() {\r\n let vo = this\r\n\r\n //timeExpired\r\n let timeExpired = get(vo, 'user.timeExpired', '')\r\n // console.log('timeExpired', timeExpired)\r\n\r\n //check\r\n if (!istimemsTZ(timeExpired)) {\r\n return '' //無過期時間, 代表未過期\r\n }\r\n\r\n //tt\r\n let tt = ot(timeExpired, 'YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n // console.log('tt', tt)\r\n\r\n //t\r\n let t = tt.format('YYYY-MM-DD')\r\n\r\n return t\r\n },\r\n\r\n isBlocked: function() {\r\n let vo = this\r\n\r\n //user\r\n let user = get(vo, 'user')\r\n\r\n //getIsBlocked\r\n let b = vo.$s.getIsBlocked(user)\r\n\r\n return b\r\n\r\n // //timeBlocked\r\n // let timeBlocked = get(vo, 'user.timeBlocked', '')\r\n // // console.log('timeBlocked', timeBlocked)\r\n\r\n // //check\r\n // if (!istimemsTZ(timeBlocked)) {\r\n // return false //無封鎖時間, 代表未封鎖\r\n // }\r\n\r\n // // //tt\r\n // // let tt = ot(timeBlocked, 'YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n // // // console.log('tt', tt)\r\n\r\n // //tn\r\n // let tn = ot().format('YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n\r\n // // //tds\r\n // // let tds = tt.diff(tn, 'second')\r\n // // // console.log('tds', tds)\r\n\r\n // // //check\r\n // // if (tn > timeBlocked) {\r\n // // return false\r\n // // }\r\n\r\n // return tn <= timeBlocked //現在時間<=封鎖時間, 代表封鎖中\r\n },\r\n\r\n timeBlockedToDay: function() {\r\n let vo = this\r\n\r\n //timeBlocked\r\n let timeBlocked = get(vo, 'user.timeBlocked', '')\r\n // console.log('timeBlocked', timeBlocked)\r\n\r\n //check\r\n if (!istimemsTZ(timeBlocked)) {\r\n return '' //無封鎖時間, 代表未封鎖\r\n }\r\n\r\n //tt\r\n let tt = ot(timeBlocked, 'YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n // console.log('tt', tt)\r\n\r\n //t\r\n let t = tt.format('YYYY-MM-DD')\r\n\r\n return t\r\n },\r\n\r\n // users: function() {\r\n // return get(this, `$store.state.users`)\r\n // },\r\n\r\n // usersGroups: function() {\r\n // let gs = groupBy(this.users, 'from')\r\n // let ks = keys(gs)\r\n // ks = sortBy(ks)\r\n // let gsTemp = {}\r\n // each(ks, (k) => {\r\n // gsTemp[k] = gs[k]\r\n // })\r\n // gs = gsTemp\r\n // return gs\r\n // },\r\n\r\n // changeParams: function() {\r\n // // console.log('computed changeParams')\r\n\r\n // let vo = this\r\n\r\n // // //check\r\n // // if (size(vo.users) === 0) {\r\n // // return ''\r\n // // }\r\n\r\n // // //firstLoading\r\n // // vo.firstLoading = false\r\n\r\n // return ''\r\n // },\r\n\r\n // spacePading: function() {\r\n // let vo = this\r\n // if (vo.panelWidth < 400) {\r\n // return 0\r\n // }\r\n // else if (vo.panelWidth < 800) {\r\n // return 10\r\n // }\r\n // return 20\r\n // },\r\n\r\n // usersGroupsHeight: function() {\r\n // let vo = this\r\n\r\n // //h\r\n // let h = vo.panelHeight - vo.headHeight - 2 * vo.spacePading - vo.groupInforHeight\r\n // h = Math.max(h, 0)\r\n\r\n // return h\r\n // },\r\n\r\n },\r\n methods: {\r\n\r\n resizePanel: function(msg) {\r\n // console.log('methods resizePanel', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.snew.offsetWidth\r\n vo.panelHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n // resizeHead: function(msg) {\r\n // // console.log('methods resizeHead', msg)\r\n\r\n // let vo = this\r\n\r\n // //headHeight\r\n // vo.headHeight = msg.snew.offsetHeight\r\n\r\n // },\r\n\r\n // resizeGroupInfor: function(msg) {\r\n // // console.log('methods resizeGroupInfor', msg)\r\n\r\n // let vo = this\r\n\r\n // //groupInforHeight\r\n // vo.groupInforHeight = msg.snew.offsetHeight\r\n\r\n // },\r\n\r\n // getFrom: function(kus) {\r\n // // console.log('methods getFrom', kus)\r\n // let vo = this\r\n // if (!isestr(kus)) {\r\n // kus = vo.$t('empty')\r\n // }\r\n // return kus\r\n // },\r\n\r\n // getIsAdmin: function(u) {\r\n // return get(u, 'isAdmin') === 'y'\r\n // },\r\n\r\n // getIsNotActive: function(u) {\r\n // return get(u, 'isActive') === 'n'\r\n // },\r\n\r\n // clickAddUser: function() {\r\n // // console.log('methods clickAddUser')\r\n\r\n // let vo = this\r\n\r\n // async function core() {\r\n // let errTemp = null\r\n\r\n // //show loading\r\n // vo.$ui.updateLoading(true)\r\n\r\n // //u\r\n // let u = {\r\n // id: genIDSeq(),\r\n // name: vo.$t('newUser'),\r\n // from: '',\r\n // isAdmin: 'n',\r\n // isActive: 'y',\r\n // }\r\n\r\n // //save\r\n // await vo.$fapi.users.insert(u)\r\n // .catch((err) => {\r\n // errTemp = err\r\n // })\r\n\r\n // //check\r\n // if (errTemp !== null) {\r\n // vo.$alert(`${vo.$t('failedToAddUser')}: ${errTemp}`, { type: 'error' })\r\n // }\r\n\r\n // //un\r\n // let un = null\r\n // await waitFun(() => {\r\n // un = find(vo.users, { id: u.id })\r\n // return iseobj(un) //確認g.id已存在\r\n // })\r\n // // console.log('un', un)\r\n\r\n // //showVeUser\r\n // vo.$dg.showVeUser(un)\r\n // .catch(() => {})\r\n\r\n // //alert\r\n // vo.$alert(vo.$t('successfulToAddUser'))\r\n\r\n // }\r\n\r\n // //core\r\n // core()\r\n // // .then((res) => {\r\n // // console.log('then', res)\r\n // // })\r\n // .catch((err) => {\r\n // console.log('catch', err)\r\n // vo.$alert(vo.$t('anUnexpectedErrorOccurred'), { type: 'error' })\r\n // })\r\n // .finally(() => {\r\n\r\n // //hide loading\r\n // vo.$ui.updateLoading(false)\r\n\r\n // })\r\n\r\n // },\r\n\r\n // clickRemoveUser: function(u) {\r\n // // console.log('methods clickRemoveUser', u)\r\n\r\n // let vo = this\r\n\r\n // async function core() {\r\n // let errTemp = null\r\n\r\n // //showCheckYesNo\r\n // let bExit = false\r\n // let t_confirmToDeleteUser = vo.$t('confirmToDeleteUser')\r\n // t_confirmToDeleteUser = t_confirmToDeleteUser.replace('{name}', u.name)\r\n // await vo.$dg.showCheckYesNo(t_confirmToDeleteUser)\r\n // .catch(() => {\r\n // bExit = true\r\n // })\r\n // if (bExit) {\r\n // return\r\n // }\r\n\r\n // //show loading\r\n // vo.$ui.updateLoading(true)\r\n\r\n // //save\r\n // await vo.$fapi.users.del(u)\r\n // .catch((err) => {\r\n // errTemp = err\r\n // })\r\n\r\n // //check\r\n // if (errTemp !== null) {\r\n // vo.$alert(`${vo.$t('failedToDeleteUser')}: ${errTemp}`, { type: 'error' })\r\n // return\r\n // }\r\n\r\n // //un\r\n // let un = null\r\n // await waitFun(() => {\r\n // un = find(vo.users, (v) => {\r\n // return v.id === u.id\r\n // })\r\n // return !iseobj(un) //確認g.id已不存在\r\n // })\r\n // // console.log('un', un)\r\n\r\n // //alert\r\n // vo.$alert(vo.$t('successfulToDeleteUser'))\r\n\r\n // }\r\n\r\n // //core\r\n // core()\r\n // // .then((res) => {\r\n // // console.log('then', res)\r\n // // })\r\n // .catch((err) => {\r\n // console.log('catch', err)\r\n // vo.$alert(vo.$t('anUnexpectedErrorOccurred'), { type: 'error' })\r\n // })\r\n // .finally(() => {\r\n\r\n // //hide loading\r\n // vo.$ui.updateLoading(false)\r\n\r\n // })\r\n\r\n // },\r\n\r\n // clickEditUser: function(u) {\r\n // // console.log('clickEditGroup', u)\r\n\r\n // let vo = this\r\n\r\n // //check\r\n // if (!vo.isOperatable) {\r\n // vo.$alert(vo.$t('cannotShowUserDetailsInViewMode'), { type: 'error' })\r\n // return\r\n // }\r\n\r\n // //showVeUser\r\n // vo.$dg.showVeUser(u)\r\n // .catch(() => {})\r\n\r\n // },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n.status-danger {\r\n background-color: #fef2f2; color: #b91c1c; border: 1px solid #fecaca;\r\n}\r\n.status-warning {\r\n background-color: #fffbeb; color: #b45309; border: 1px solid #fde68a;\r\n}\r\n.status-success {\r\n background-color: #f0fdf4; color: #15803d; border: 1px solid #bbf7d0;\r\n}\r\n.status-info {\r\n background-color: #f8fafc; color: #475569; border: 1px solid #e2e8f0;\r\n}\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentUserInfor.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentUserInfor.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContentUserInfor.vue?vue&type=template&id=0620fb52&scoped=true\"\nimport script from \"./LayoutContentUserInfor.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContentUserInfor.vue?vue&type=script&lang=js\"\nimport style0 from \"./LayoutContentUserInfor.vue?vue&type=style&index=0&id=0620fb52&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0620fb52\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"height\":\"100%\"},attrs:{\"changeParams\":_vm.changeParams},on:{\"domresize\":_vm.resizePanel}},[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[_c('div',{staticStyle:{\"padding\":\"10px 10px 10px 20px\"}},[_c('div',{style:(`display:flex; align-items:center; padding:${_vm.drawer?'5px':'5px 5px 5px 20px'};`)},[_c('WIcon',{attrs:{\"icon\":_vm.mdiAccountGroupOutline,\"color\":'#000',\"size\":32}}),_c('div',{staticStyle:{\"padding-left\":\"12px\"}},[_c('div',{staticStyle:{\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmUsersList'))+\" \")]),_c('div',{staticStyle:{\"padding-top\":\"2px\",\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmUsersListMsg'))+\" \")])])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"},attrs:{\"_v-if\":\"showIsEditable || isEditable\"}},[(_vm.showIsEditable)?[_c('div',{staticStyle:{\"padding\":\"6px 0px 4px 4px\"}},[_c('WSwitch',{attrs:{\"text\":_vm.$t('modeEdit')},model:{value:(_vm.isEditable),callback:function ($$v) {_vm.isEditable=$$v},expression:\"isEditable\"}})],1),_c('div',{staticStyle:{\"padding-left\":\"10px\"}})]:_vm._e(),(true)?[_c('WPopup',{attrs:{\"isolated\":true,\"_show\":\"\",\"_hide\":\"\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('showTabCols'),\"icon\":_vm.mdiTableHeadersEye,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"iconColor\":'#444',\"iconColorHover\":'#222',\"iconColorFocus\":'#222',\"shadow\":false,\"_click\":\"\"}})]},proxy:true},{key:\"content\",fn:function(){return [_c('div',{staticStyle:{\"padding\":\"10px 0px 10px 0px\"}},[_c('div',{staticStyle:{\"padding\":\"7px 10px\",\"font-size\":\"0.85rem\",\"color\":\"#222\",\"background\":\"#f2f2f2\"}},[_vm._v(\" \"+_vm._s(_vm.$t('showTabCols'))+\" \")]),_c('div',{staticStyle:{\"padding\":\"7px 9px 0px 7px\"}},[_c('WInputCheckbox',{attrs:{\"items\":_vm.tabKeysPick},on:{\"input\":_vm.toggleTabKeys},scopedSlots:_vm._u([{key:\"default\",fn:function(props){return [_c('div',{staticStyle:{\"padding-left\":\"3px\",\"display\":\"flex\",\"align-items\":\"center\",\"font-size\":\"0.85rem\",\"height\":\"24px\",\"cursor\":\"pointer\"}},[_vm._v(\" \"+_vm._s(_vm.getHead(props.item.data))+\" \")])]}}],null,false,286315898),model:{value:(_vm.tabKeysShow),callback:function ($$v) {_vm.tabKeysShow=$$v},expression:\"tabKeysShow\"}})],1)])]},proxy:true}],null,false,2452858936)}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('userAdd'),\"icon\":_vm.mdiPlus,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"iconColor\":'#444',\"iconColorHover\":'#222',\"iconColorFocus\":'#222',\"shadow\":false},on:{\"click\":_vm.addItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemCheckOne)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('userCopy'),\"icon\":_vm.mdiContentCopy,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"iconColor\":'#444',\"iconColorHover\":'#222',\"iconColorFocus\":'#222',\"shadow\":false},on:{\"click\":_vm.copyItem}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('userDeleteCheckUsers'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"iconColor\":'#444',\"iconColorHover\":'#222',\"iconColorFocus\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.isModified)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('saveChanges'),\"icon\":_vm.mdiCloudUploadOutline,\"backgroundColor\":'rgba(255,0,50,0.7)',\"backgroundColorHover\":'rgba(255,0,50,0.8)',\"iconColor\":'#eee',\"iconColorHover\":'#fff',\"iconColorFocus\":'#fff',\"shadow\":false},on:{\"click\":_vm.saveUsers}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2)]),(!_vm.isLoading)?[(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_vm._e()]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n style=\"height:100%;\"\r\n v-domresize\r\n @domresize=\"resizePanel\"\r\n :changeParams=\"changeParams\"\r\n >\r\n\r\n <div\r\n style=\"background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 標題區 -->\r\n <div style=\"padding:10px 10px 10px 20px;\">\r\n <div :style=\"`display:flex; align-items:center; padding:${drawer?'5px':'5px 5px 5px 20px'};`\">\r\n\r\n <WIcon\r\n :icon=\"mdiAccountGroupOutline\"\r\n :color=\"'#000'\"\r\n :size=\"32\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:12px;\">\r\n\r\n <div style=\"font-size:1.4rem; color:#000;\">\r\n {{$t('mmUsersList')}}\r\n </div>\r\n\r\n <div style=\"padding-top:2px; font-size:0.8rem; color:#666;\">\r\n {{$t('mmUsersListMsg')}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\"\r\n _v-if=\"showIsEditable || isEditable\"\r\n >\r\n\r\n <template v-if=\"showIsEditable\">\r\n\r\n <div style=\"padding:6px 0px 4px 4px;\">\r\n <WSwitch\r\n v-model=\"isEditable\"\r\n :text=\"$t('modeEdit')\"\r\n ></WSwitch>\r\n </div>\r\n\r\n <div style=\"padding-left:10px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"true\">\r\n\r\n <WPopup\r\n :isolated=\"true\"\r\n _show=\"\"\r\n _hide=\"\"\r\n >\r\n <template v-slot:trigger>\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('showTabCols')\"\r\n :icon=\"mdiTableHeadersEye\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :iconColorFocus=\"'#222'\"\r\n :shadow=\"false\"\r\n _click=\"\"\r\n ></WButtonCircle>\r\n </template>\r\n\r\n <template v-slot:content>\r\n <div style=\"padding:10px 0px 10px 0px;\">\r\n\r\n <div style=\"padding:7px 10px; font-size:0.85rem; color:#222; background:#f2f2f2;\">\r\n {{$t('showTabCols')}}\r\n </div>\r\n\r\n <div style=\"padding:7px 9px 0px 7px;\">\r\n <WInputCheckbox\r\n :items=\"tabKeysPick\"\r\n v-model=\"tabKeysShow\"\r\n @input=\"toggleTabKeys\"\r\n >\r\n <template v-slot=\"props\">\r\n <div style=\"padding-left:3px; display:flex; align-items:center; font-size:0.85rem; height:24px; cursor:pointer;\">\r\n {{getHead(props.item.data)}}\r\n </div>\r\n </template>\r\n </WInputCheckbox>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WPopup>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('userAdd')\"\r\n :icon=\"mdiPlus\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :iconColorFocus=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"addItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemCheckOne\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('userCopy')\"\r\n :icon=\"mdiContentCopy\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :iconColorFocus=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"copyItem\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('userDeleteCheckUsers')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :iconColorFocus=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && isModified\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('saveChanges')\"\r\n :icon=\"mdiCloudUploadOutline\"\r\n :backgroundColor=\"'rgba(255,0,50,0.7)'\"\r\n :backgroundColorHover=\"'rgba(255,0,50,0.8)'\"\r\n :iconColor=\"'#eee'\"\r\n :iconColorHover=\"'#fff'\"\r\n :iconColorFocus=\"'#fff'\"\r\n :shadow=\"false\"\r\n @click=\"saveUsers\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template\r\n v-if=\"!isLoading\"\r\n >\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiAccountGroupOutline, mdiCloudUploadOutline, mdiTrashCanOutline, mdiTableHeadersEye, mdiPlus, mdiContentCopy } from '@mdi/js/mdi.js'\r\nimport ot from 'dayjs'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport istimemsTZ from 'wsemi/src/istimemsTZ.mjs'\r\nimport isEmail from 'wsemi/src/isEmail.mjs'\r\nimport cstr from 'wsemi/src/cstr.mjs'\r\nimport arrPull from 'wsemi/src/arrPull.mjs'\r\nimport domShowInputDatatime from 'wsemi/src/domShowInputDatatime.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WPopup from 'w-component-vue/src/components/WPopup.vue'\r\nimport WInputCheckbox from 'w-component-vue/src/components/WInputCheckbox.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WIcon,\r\n WSwitch,\r\n WButtonCircle,\r\n WPopup,\r\n WInputCheckbox,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n drawer: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data: function() {\r\n return {\r\n mdiAccountGroupOutline,\r\n mdiCloudUploadOutline,\r\n mdiTrashCanOutline,\r\n mdiTableHeadersEye,\r\n mdiPlus,\r\n mdiContentCopy,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n isLoading: true,\r\n firstSetting: true,\r\n showIsEditable: false,\r\n isEditable: false,\r\n isModified: false,\r\n\r\n tabKeys: [\r\n 'id',\r\n 'order',\r\n 'account',\r\n 'password', //後端api不提供, 前端自動渲染提供變更密碼用\r\n 'name',\r\n 'email',\r\n 'description',\r\n 'from',\r\n 'redir',\r\n 'isAdmin',\r\n 'timeVerified',\r\n 'timeExpired',\r\n 'timeBlocked',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n 'isActive',\r\n ],\r\n tabKeysPick: [\r\n 'account',\r\n 'password', //後端api不提供, 前端自動渲染提供變更密碼用\r\n 'name',\r\n 'email',\r\n 'description',\r\n 'from',\r\n 'redir',\r\n 'isAdmin',\r\n 'timeVerified',\r\n 'timeExpired',\r\n 'timeBlocked',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n 'isActive',\r\n ],\r\n tabKeysShow: [\r\n 'account',\r\n 'password', //後端api不提供, 前端自動渲染提供變更密碼用\r\n 'name',\r\n 'email',\r\n 'description',\r\n 'from',\r\n 'redir',\r\n 'isAdmin',\r\n 'timeVerified',\r\n 'timeExpired',\r\n 'timeBlocked',\r\n 'userId',\r\n 'timeCreate',\r\n 'userIdUpdate',\r\n 'timeUpdate',\r\n 'isActive',\r\n ],\r\n\r\n widthUsersName: null,\r\n widthUsersEmail: null,\r\n widthUsersDescription: null,\r\n\r\n users: [],\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n // console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //註冊至$dg供使用\r\n vo.$dg.toggleItemIsAdminById = vo.toggleItemIsAdminById\r\n // vo.$dg.toggleItemIsVerifiedById = vo.toggleItemIsVerifiedById\r\n vo.$dg.toggleItemIsActiveById = vo.toggleItemIsActiveById\r\n vo.$dg.modifyItemPasswordById = vo.modifyItemPasswordById\r\n vo.$dg.modifyItemTimeVerifiedById = vo.modifyItemTimeVerifiedById\r\n vo.$dg.modifyItemTimeExpiredById = vo.modifyItemTimeExpiredById\r\n vo.$dg.modifyItemTimeBlockedById = vo.modifyItemTimeBlockedById\r\n\r\n //firstSetting\r\n if (vo.firstSetting) {\r\n // console.log('webInfor', vo.webInfor)\r\n\r\n let showModeEditUsers = get(vo, 'webInfor.showModeEditUsers', '')\r\n vo.showIsEditable = showModeEditUsers === 'y'\r\n let modeEditUsers = get(vo, 'webInfor.modeEditUsers', '')\r\n vo.isEditable = modeEditUsers === 'y'\r\n\r\n vo.widthUsersName = get(vo, 'webInfor.widthUsersName', '')\r\n vo.widthUsersEmail = get(vo, 'webInfor.widthUsersEmail', '')\r\n vo.widthUsersDescription = get(vo, 'webInfor.widthUsersDescription', '')\r\n\r\n vo.firstSetting = false\r\n }\r\n\r\n //token\r\n let token = vo.userToken\r\n // console.log('token', token)\r\n\r\n //getUsersList\r\n vo.$fapi.getUsersList(token)\r\n .then((res) => {\r\n // console.log(res)\r\n res = sortBy(res, 'order')\r\n vo.users = res\r\n })\r\n .catch((err) => {\r\n console.log(err)\r\n vo.errMsg = vo.$t('getDataError')\r\n })\r\n .finally(() => {\r\n vo.isLoading = false\r\n })\r\n\r\n },\r\n computed: {\r\n\r\n webInfor: function() {\r\n let wi = get(this, `$store.state.webInfor`)\r\n return wi\r\n },\r\n\r\n userToken: function() {\r\n let vo = this\r\n return get(vo, `$store.state.userToken`)\r\n },\r\n\r\n changeParams: function() {\r\n // console.log('computed changeParams')\r\n\r\n let vo = this\r\n\r\n //trigger\r\n let isEditable = vo.isEditable\r\n\r\n //items\r\n let items = cloneDeep(vo.users)\r\n\r\n //save\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt({ isEditable })\r\n\r\n //isLoading\r\n vo.isLoading = false\r\n\r\n return ''\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) > 0\r\n\r\n return b\r\n },\r\n\r\n hasItemCheckOne: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) === 1\r\n\r\n return b\r\n },\r\n\r\n errItemsByAccount: function() {\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //kpErr\r\n let kpErr = {}\r\n let kpAccount = {}\r\n each(rows, (v, k) => {\r\n\r\n //account\r\n let account = get(v, 'account', '')\r\n\r\n //check\r\n if (!isestr(account)) {\r\n\r\n //kpErr\r\n kpErr[account] = vo.$t(`userAccountEmpty`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //check\r\n if (haskey(kpAccount, account)) {\r\n\r\n //kpErr\r\n kpErr[account] = vo.$t(`userAccountDuplicate`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //kpAccount\r\n kpAccount[account] = true\r\n\r\n })\r\n\r\n return kpErr\r\n },\r\n\r\n errItemsByEmail: function() {\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //kpErr\r\n let kpErr = {}\r\n let kpEmail = {}\r\n each(rows, (v, k) => {\r\n\r\n //email\r\n let email = get(v, 'email', '')\r\n\r\n //check\r\n if (!isestr(email)) {\r\n\r\n //kpErr\r\n kpErr[email] = vo.$t(`userEmailEmpty`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //check\r\n if (!isEmail(email)) {\r\n\r\n //kpErr\r\n kpErr[email] = vo.$t(`userEmailError`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //check\r\n if (haskey(kpEmail, email)) {\r\n\r\n //kpErr\r\n kpErr[email] = vo.$t(`userEmailDuplicate`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n //kpEmail\r\n kpEmail[email] = true\r\n\r\n })\r\n\r\n return kpErr\r\n },\r\n\r\n errItemsByRedir: function() {\r\n let vo = this\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //kpErr\r\n let kpErr = {}\r\n each(rows, (v, k) => {\r\n\r\n //redir\r\n let redir = get(v, 'redir', '')\r\n\r\n //check\r\n if (!isestr(redir)) {\r\n\r\n //kpErr\r\n kpErr[redir] = vo.$t(`userRedirEmpty`)\r\n\r\n return true //跳出換下一個\r\n }\r\n\r\n })\r\n\r\n return kpErr\r\n },\r\n\r\n isError: function() {\r\n let vo = this\r\n\r\n let c = ''\r\n let b = false\r\n b = iseobj(vo.errItemsByAccount)\r\n if (b) {\r\n c = vo.$t('errInAccounts')\r\n return c\r\n }\r\n b = iseobj(vo.errItemsByEmail)\r\n if (b) {\r\n c = vo.$t('errInEmails')\r\n return c\r\n }\r\n b = iseobj(vo.errItemsByRedir)\r\n if (b) {\r\n c = vo.$t('errInRedir')\r\n return c\r\n }\r\n\r\n return ''\r\n },\r\n\r\n kpHead: function() {\r\n let vo = this\r\n\r\n let kp = {\r\n 'id': vo.$t('id'),\r\n 'order': vo.$t('order'),\r\n 'account': vo.$t('account'),\r\n 'password': vo.$t('password'),\r\n 'name': vo.$t('name'),\r\n 'email': vo.$t('email'),\r\n 'description': vo.$t('description'),\r\n 'from': vo.$t('from'),\r\n 'redir': vo.$t('redir'),\r\n 'isAdmin': vo.$t('isAdmin'),\r\n 'timeVerified': vo.$t('userTimeVerified'),\r\n 'timeExpired': vo.$t('userTimeExpired'),\r\n 'timeBlocked': vo.$t('userTimeBlocked'),\r\n 'userId': vo.$t('userId'),\r\n 'timeCreate': vo.$t('timeCreate'),\r\n 'userIdUpdate': vo.$t('userIdUpdate'),\r\n 'timeUpdate': vo.$t('timeUpdate'),\r\n 'isActive': vo.$t('isActive'),\r\n }\r\n\r\n return kp\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizePanel: function(msg) {\r\n // console.log('methods resizePanel', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.snew.offsetWidth\r\n vo.panelHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n getHead: function(key) {\r\n // console.log('methods getHead', key)\r\n\r\n let vo = this\r\n\r\n let head = get(vo, `kpHead.${key}`, '')\r\n\r\n return head\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = vo.tabKeys\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = vo.kpHead\r\n\r\n //kpCellEditable, kpRowDrag, kpHeadCheckBox\r\n let kpCellEditable = {}\r\n let kpRowDrag = {}\r\n let kpHeadCheckBox = {}\r\n if (vo.isEditable) {\r\n kpCellEditable = {\r\n 'account': true,\r\n 'name': true,\r\n 'email': true,\r\n 'description': true,\r\n 'from': true,\r\n 'redir': true,\r\n }\r\n kpRowDrag = {\r\n 'account': true,\r\n }\r\n kpHeadCheckBox = {\r\n 'account': true,\r\n }\r\n }\r\n\r\n //kpHeadHide\r\n let kpHeadHide = {\r\n 'id': true,\r\n 'order': true,\r\n }\r\n if (true) {\r\n let tabKeysHide = arrPull(vo.tabKeysPick, vo.tabKeysShow)\r\n each(tabKeysHide, (k) => {\r\n kpHeadHide[k] = true\r\n })\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n // autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpHeadHide,\r\n kpHeadFixLeft: {\r\n 'account': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'timeVerified': 250,\r\n 'timeExpired': 250,\r\n 'timeBlocked': 250,\r\n },\r\n kpHeadFilterType: {\r\n 'id': 'text',\r\n 'order': 'text',\r\n 'account': 'text',\r\n 'password': 'text',\r\n 'name': 'text',\r\n 'email': 'text',\r\n 'description': 'text',\r\n 'from': 'text',\r\n 'redir': 'text',\r\n 'isAdmin': 'text',\r\n 'timeVerified': 'text',\r\n 'timeExpired': 'text',\r\n 'timeBlocked': 'text',\r\n 'userId': 'text',\r\n 'timeCreate': 'text',\r\n 'userIdUpdate': 'text',\r\n 'timeUpdate': 'text',\r\n 'isActive': 'text',\r\n },\r\n kpCellEditable,\r\n kpRowDrag,\r\n kpHeadCheckBox,\r\n kpHeadFilter: {\r\n 'password': false,\r\n },\r\n kpHeadSort: {\r\n 'password': false,\r\n },\r\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\r\n 'password': false,\r\n 'timeVerified': false,\r\n 'timeExpired': false,\r\n 'timeBlocked': false,\r\n },\r\n kpCellRender: {\r\n 'account': (v) => {\r\n // console.log('kpCellRender account', v)\r\n\r\n //err\r\n let err = get(vo.errItemsByAccount, v, '')\r\n // console.log(v, err)\r\n\r\n //check\r\n if (isestr(err)) {\r\n v = `\r\n <span title=\"${err}\">\r\n <span style=\"color:#F57C00;\">${cstr(v)}</span>\r\n <img style=\"vertical-align:sub; width:16px; height:16px;\" src=\"${vo.$ui.getIcon('warning')}\" />\r\n </span>\r\n `\r\n }\r\n\r\n return v\r\n },\r\n 'password': (v, k, r) => {\r\n // console.log('kpCellRender password', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n // `\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\">\r\n <button style=\"width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\" onclick=\"$vo.$dg.modifyItemPasswordById('${id}')\" ${vo.isEditable ? '' : 'disabled'} >${vo.$t('userResetPassword')}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n 'email': (v) => {\r\n // console.log('kpCellRender email', v)\r\n\r\n //err\r\n let err = get(vo.errItemsByEmail, v, '')\r\n // console.log(v, err)\r\n\r\n //check\r\n if (isestr(err)) {\r\n v = `\r\n <span title=\"${err}\">\r\n <span style=\"color:#F57C00;\">${cstr(v)}</span>\r\n <img style=\"vertical-align:sub; width:16px; height:16px;\" src=\"${vo.$ui.getIcon('warning')}\" />\r\n </span>\r\n `\r\n }\r\n\r\n return v\r\n },\r\n 'redir': (v) => {\r\n // console.log('kpCellRender redir', v)\r\n\r\n //err\r\n let err = get(vo.errItemsByRedir, v, '')\r\n // console.log(v, err)\r\n\r\n //check\r\n if (isestr(err)) {\r\n v = `\r\n <span title=\"${err}\">\r\n <span style=\"color:#F57C00;\">${cstr(v)}</span>\r\n <img style=\"vertical-align:sub; width:16px; height:16px;\" src=\"${vo.$ui.getIcon('warning')}\" />\r\n </span>\r\n `\r\n }\r\n\r\n return v\r\n },\r\n 'isAdmin': (v, k, r) => {\r\n // console.log('kpCellRender isAdmin', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.toggleItemIsAdminById('${id}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n 'isActive': (v, k, r) => {\r\n // console.log('kpCellRender isActive', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.toggleItemIsActiveById('${id}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n 'timeVerified': (v, k, r) => {\r\n // console.log('kpCellRender timeVerified', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n //vv, vm\r\n let vv = ''\r\n let vm = vo.$t('userTimeEmpty')\r\n if (istimemsTZ(v)) { //原始數據為timemsTZ格式\r\n let vt = ot(v)\r\n vv = vt.format('YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n vm = vt.format('YYYY-MM-DD HH:mm')\r\n }\r\n // console.log('vv', vv)\r\n // console.log('vm', vm)\r\n\r\n //isVerified\r\n let isVerified = vo.$s.getIsVerified(r)\r\n\r\n //h\r\n let iconColor = isVerified ? 'green' : 'red'\r\n let text = isVerified ? vo.$t('isVerifiedY') : vo.$t('isVerifiedN')\r\n let h = `\r\n <div style=\"width:90px; display:inline-flex; align-items:center; vertical-align:middle; color:${iconColor}; \">\r\n <i class=\"mdi ${isVerified ? 'mdi-check-bold' : 'mdi-close-thick'}\"></i>\r\n <span style=\"padding-left:2px;\">${text}</span>\r\n </div>\r\n `\r\n\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\" style=\"display:flex; align-items:center;\">\r\n ${h}\r\n <button style=\"width:126px; min-width:126px;\" onclick=\"$vo.$dg.modifyItemTimeVerifiedById(this,'${vv}','${id}')\" ${vo.isEditable ? '' : 'disabled'}>${vm}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n 'timeExpired': (v, k, r) => {\r\n // console.log('kpCellRender timeExpired', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n //vv, vm\r\n let vv = ''\r\n let vm = vo.$t('userTimeEmpty')\r\n if (istimemsTZ(v)) { //原始數據為timemsTZ格式\r\n let vt = ot(v)\r\n vv = vt.format('YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n vm = vt.format('YYYY-MM-DD HH:mm')\r\n }\r\n // console.log('vv', vv)\r\n // console.log('vm', vm)\r\n\r\n //isExpired\r\n let isExpired = vo.$s.getIsExpired(r)\r\n\r\n //h\r\n let iconColor = !isExpired ? 'green' : 'red'\r\n let text = isExpired ? vo.$t('isExpiredY') : vo.$t('isExpiredN')\r\n let h = `\r\n <div style=\"width:90px; display:inline-flex; align-items:center; vertical-align:middle; color:${iconColor}; \">\r\n <i class=\"mdi ${!isExpired ? 'mdi-check-bold' : 'mdi-close-thick'}\"></i>\r\n <span style=\"padding-left:2px;\">${text}</span>\r\n </div>\r\n `\r\n\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\" style=\"display:flex; align-items:center;\">\r\n ${h}\r\n <button style=\"width:126px; min-width:126px;\" onclick=\"$vo.$dg.modifyItemTimeExpiredById(this,'${vv}','${id}')\" ${vo.isEditable ? '' : 'disabled'}>${vm}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n 'timeBlocked': (v, k, r) => {\r\n // console.log('kpCellRender timeBlocked', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n //vv, vm\r\n let vv = ''\r\n let vm = vo.$t('userTimeEmpty')\r\n if (istimemsTZ(v)) { //原始數據為timemsTZ格式\r\n let vt = ot(v)\r\n vv = vt.format('YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n vm = vt.format('YYYY-MM-DD HH:mm')\r\n }\r\n // console.log('vv', vv)\r\n // console.log('vm', vm)\r\n\r\n //isBlocked\r\n let isBlocked = vo.$s.getIsBlocked(r)\r\n\r\n //h\r\n let iconColor = !isBlocked ? 'green' : 'red'\r\n let text = isBlocked ? vo.$t('isBlockedY') : vo.$t('isBlockedN')\r\n let h = `\r\n <div style=\"width:90px; display:inline-flex; align-items:center; vertical-align:middle; color:${iconColor}; \">\r\n <i class=\"mdi ${!isBlocked ? 'mdi-check-bold' : 'mdi-close-thick'}\"></i>\r\n <span style=\"padding-left:2px;\">${text}</span>\r\n </div>\r\n `\r\n\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\" style=\"display:flex; align-items:center;\">\r\n ${h}\r\n <button style=\"width:126px; min-width:126px;\" onclick=\"$vo.$dg.modifyItemTimeBlockedById(this,'${vv}','${id}')\" ${vo.isEditable ? '' : 'disabled'}>${vm}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n toggleTabKeys: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //showKeys\r\n cmp.showKeys(vo.tabKeysShow)\r\n // console.log('tabKeysShow', vo.tabKeysShow)\r\n\r\n },\r\n\r\n modifyItemPasswordById: function(id) {\r\n // console.log('modifyItemPasswordById', id)\r\n\r\n let vo = this\r\n\r\n vo.$alert(`尚待開發`, { type: 'error' }) //bbb\r\n\r\n // //k\r\n // let k = 'password'\r\n\r\n // //check\r\n // if (!isestr(id)) {\r\n // vo.$alert(`${vo.$t('userEditNoUserId')}`, { type: 'error' })\r\n // return\r\n // }\r\n\r\n // //rows\r\n // let rows = get(vo, 'opt.rows', [])\r\n\r\n // //find\r\n // let r = null\r\n // let kr = null\r\n // each(rows, (v, k) => {\r\n // if (get(v, 'id', '') === id) {\r\n // r = v\r\n // kr = k\r\n // return false //跳出\r\n // }\r\n // })\r\n\r\n // //check\r\n // if (!iseobj(r)) {\r\n // vo.$alert(`${vo.$t('userEditNoUserData')}`, { type: 'error' })\r\n // return\r\n // }\r\n\r\n // //v\r\n // let _v = get(r, k, 'n')\r\n // let v = _v === 'y' ? 'n' : 'y'\r\n // // console.log(k, v)\r\n\r\n // //set\r\n // set(vo, `opt.rows[${kr}].${k}`, v)\r\n // // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n // //refresh\r\n // vo.refresh()\r\n\r\n // //isModified\r\n // vo.isModified = true\r\n\r\n },\r\n\r\n toggleItemByKeyAndId: function(key, id) {\r\n // console.log('toggleItemByKeyAndId', key, id)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('userEditNoUserId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('userEditNoUserData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //v\r\n let _v = get(r, key, 'n')\r\n let v = _v === 'y' ? 'n' : 'y'\r\n // console.log(key, v)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].${key}`, v)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n toggleItemIsAdminById: function(id) {\r\n // console.log('toggleItemIsAdminById', id)\r\n\r\n let vo = this\r\n\r\n //toggleItemByKeyAndId\r\n vo.toggleItemByKeyAndId('isAdmin', id)\r\n\r\n },\r\n\r\n toggleItemIsActiveById: function(id) {\r\n // console.log('toggleItemIsActiveById', id)\r\n\r\n let vo = this\r\n\r\n //toggleItemByKeyAndId\r\n vo.toggleItemByKeyAndId('isActive', id)\r\n\r\n },\r\n\r\n modifyItemByKeyAndId: function(key, ele, t, id) {\r\n // console.log('modifyItemTimeVerifiedById', ele, t, id)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('userEditNoUserId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //timePrev, 須給予秒時間, 要滿足istime才能展示初始值\r\n let timePrev = ''\r\n if (istimemsTZ(t)) {\r\n timePrev = ot(t).format('YYYY-MM-DDTHH:mm:ss')\r\n }\r\n // console.log('timePrev', timePrev)\r\n\r\n //domShowInputDatatime\r\n let type = 'datetime-local' //'datetime-local', 'date'\r\n domShowInputDatatime(timePrev, { eleRef: ele, type })\r\n .then((timeNew) => {\r\n // console.log(k, 'timeNew', timeNew)\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('userEditNoUserData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //v\r\n let vt = ot(timeNew, 'YYYY-MM-DDTHH:mm') //domShowInputDatatime數據為年月日時分\r\n let v = vt.format('YYYY-MM-DDTHH:mm:ss.SSSZ') //轉回原始數據為timemsTZ格式\r\n // console.log('v', v)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].${key}`, v)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n })\r\n\r\n },\r\n\r\n modifyItemTimeVerifiedById: function(ele, t, id) {\r\n // console.log('modifyItemTimeVerifiedById', ele, t, id)\r\n\r\n let vo = this\r\n\r\n //modifyItemByKeyAndId\r\n vo.modifyItemByKeyAndId('timeVerified', ele, t, id)\r\n\r\n },\r\n\r\n modifyItemTimeExpiredById: function(ele, t, id) {\r\n // console.log('modifyItemTimeExpiredById', ele, t, id)\r\n\r\n let vo = this\r\n\r\n //modifyItemByKeyAndId\r\n vo.modifyItemByKeyAndId('timeExpired', ele, t, id)\r\n\r\n },\r\n\r\n modifyItemTimeBlockedById: function(ele, t, id) {\r\n // console.log('modifyItemTimeBlockedById', ele, t, id)\r\n\r\n let vo = this\r\n\r\n //modifyItemByKeyAndId\r\n vo.modifyItemByKeyAndId('timeBlocked', ele, t, id)\r\n\r\n },\r\n\r\n addItem: function() {\r\n // console.log('method addItem')\r\n\r\n let vo = this\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //r\r\n let r = vo.$ds.users.funNew()\r\n r.name = vo.$s.getNameNew(rows, 'name', '', vo.$t('userAddNameNew'))\r\n r.userId = `{${vo.$t('userAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('userAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('userAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('userAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.users = cloneDeep(rows) //直接更新由getUsersList取得的users, 連帶驅動computed重算, 故不用另外更新vo.items與vo.opt.rows\r\n // console.log('cloneDeep(vo.users)', cloneDeep(vo.users))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n copyItem: function() {\r\n // console.log('method copyItem')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) !== 1) {\r\n console.log(`size(vo.itemsCheck) !== 1`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //find\r\n let tar = vo.itemsCheck[0]\r\n let tarId = get(tar, 'data.id', '')\r\n let row = null\r\n each(rows, (v) => {\r\n let id = get(v, 'id', '')\r\n if (id === tarId) {\r\n row = v\r\n return false //跳出\r\n }\r\n })\r\n // console.log('tar', tar)\r\n // console.log('row', row)\r\n\r\n //check\r\n if (!iseobj(row)) {\r\n console.log(`!iseobj(row)`, row)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //r\r\n let r = cloneDeep(row)\r\n // let nameOld = r.name\r\n let _r = vo.$ds.users.funNew()\r\n r.id = _r.id //使用新建方式預先產生id避免重複\r\n // r.name = vo.$s.getNameNew(rows, 'name', nameOld, vo.$t('userCopyNameNew'))\r\n r.userId = `{${vo.$t('userAddIdNew')}}`\r\n r.timeCreate = `{${vo.$t('userAddIdNew')}}`\r\n r.userIdUpdate = `{${vo.$t('userAddIdNew')}}`\r\n r.timeUpdate = `{${vo.$t('userAddIdNew')}}`\r\n // console.log('r', r)\r\n\r\n //添加至最首\r\n rows = [\r\n r,\r\n ...rows,\r\n ]\r\n\r\n //save\r\n vo.users = cloneDeep(rows) //直接更新由getUsersList取得的users, 連帶驅動computed重算, 故不用另外更新vo.items與vo.opt.rows\r\n // console.log('cloneDeep(vo.users)', cloneDeep(vo.users))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n console.log(`size(vo.itemsCheck) === 0`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let id = get(v, 'data.id', '')\r\n if (!isestr(id)) {\r\n console.log(`invalid id`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.id !== id\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.users = cloneDeep(rows) //直接更新由getUsersList取得的users, 連帶驅動computed重算, 故不用另外更新vo.items與vo.opt.rows\r\n // console.log('cloneDeep(vo.users)', cloneDeep(vo.users))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n saveUsers: function() {\r\n // console.log('method saveUsers')\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n let errTemp = null\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //check\r\n if (isestr(vo.isError)) {\r\n vo.$alert(`${vo.isError}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //check\r\n if (size(rows) === 0) {\r\n vo.$alert(`${vo.$t('userAddEmpty')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //token\r\n let token = vo.userToken\r\n // console.log('token', token)\r\n\r\n //updateUsersList\r\n await vo.$fapi.updateUsersList(token, rows)\r\n .catch((err) => {\r\n errTemp = err\r\n })\r\n\r\n //check\r\n if (errTemp !== null) {\r\n vo.$alert(`${vo.$t('userSaveUsersFail')}: ${errTemp}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //isModified\r\n vo.isModified = false\r\n\r\n //alert\r\n vo.$alert(vo.$t('userSaveUsersSuccess'))\r\n\r\n }\r\n\r\n //core\r\n core()\r\n // .then((res) => {\r\n // console.log('then', res)\r\n // })\r\n .catch((err) => {\r\n console.log('catch', err)\r\n vo.$alert(vo.$t('anUnexpectedErrorOccurred'), { type: 'error' })\r\n })\r\n .finally(() => {\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentUsers.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentUsers.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContentUsers.vue?vue&type=template&id=716473ce&scoped=true\"\nimport script from \"./LayoutContentUsers.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContentUsers.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"716473ce\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"height\":\"100%\"},attrs:{\"changeParams\":_vm.changeParams},on:{\"domresize\":_vm.resizePanel}},[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[_c('div',{staticStyle:{\"padding\":\"10px 10px 10px 20px\"}},[_c('div',{style:(`display:flex; align-items:center; padding:${_vm.drawer?'5px':'5px 5px 5px 20px'};`)},[_c('WIcon',{attrs:{\"icon\":_vm.mdiShieldKeyOutline,\"color\":'#000',\"size\":32}}),_c('div',{staticStyle:{\"padding-left\":\"12px\"}},[_c('div',{staticStyle:{\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmTokensList'))+\" \")]),_c('div',{staticStyle:{\"padding-top\":\"2px\",\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmTokensListMsg'))+\" \")])])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"},attrs:{\"_v-if\":\"showIsEditable || isEditable\"}},[(_vm.showIsEditable)?[_c('div',{staticStyle:{\"padding\":\"6px 0px 4px 4px\"}},[_c('WSwitch',{attrs:{\"text\":_vm.$t('modeEdit')},model:{value:(_vm.isEditable),callback:function ($$v) {_vm.isEditable=$$v},expression:\"isEditable\"}})],1),_c('div',{staticStyle:{\"padding-left\":\"10px\"}})]:_vm._e(),(true)?[_c('WPopup',{attrs:{\"isolated\":true,\"_show\":\"\",\"_hide\":\"\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('showTabCols'),\"icon\":_vm.mdiTableHeadersEye,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"iconColor\":'#444',\"iconColorHover\":'#222',\"iconColorFocus\":'#222',\"shadow\":false,\"_click\":\"\"}})]},proxy:true},{key:\"content\",fn:function(){return [_c('div',{staticStyle:{\"padding\":\"10px 0px 10px 0px\"}},[_c('div',{staticStyle:{\"padding\":\"7px 10px\",\"font-size\":\"0.85rem\",\"color\":\"#222\",\"background\":\"#f2f2f2\"}},[_vm._v(\" \"+_vm._s(_vm.$t('showTabCols'))+\" \")]),_c('div',{staticStyle:{\"padding\":\"7px 9px 0px 7px\"}},[_c('WInputCheckbox',{attrs:{\"items\":_vm.tabKeysPick},on:{\"input\":_vm.toggleTabKeys},scopedSlots:_vm._u([{key:\"default\",fn:function(props){return [_c('div',{staticStyle:{\"padding-left\":\"3px\",\"display\":\"flex\",\"align-items\":\"center\",\"font-size\":\"0.85rem\",\"height\":\"24px\",\"cursor\":\"pointer\"}},[_vm._v(\" \"+_vm._s(_vm.getHead(props.item.data))+\" \")])]}}],null,false,286315898),model:{value:(_vm.tabKeysShow),callback:function ($$v) {_vm.tabKeysShow=$$v},expression:\"tabKeysShow\"}})],1)])]},proxy:true}],null,false,2452858936)}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('tokenDeleteCheckTokens'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"iconColor\":'#444',\"iconColorHover\":'#222',\"iconColorFocus\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.isModified)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('saveChanges'),\"icon\":_vm.mdiCloudUploadOutline,\"backgroundColor\":'rgba(255,0,50,0.6)',\"backgroundColorHover\":'rgba(255,0,50,0.7)',\"backgroundColorFocus\":'rgba(255,0,50,0.7)',\"iconColor\":'#eee',\"iconColorHover\":'#fff',\"iconColorFocus\":'#fff',\"shadow\":false},on:{\"click\":_vm.saveTokens}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2)]),(!_vm.isLoading)?[(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_vm._e()]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\r\n <div\r\n style=\"height:100%;\"\r\n v-domresize\r\n @domresize=\"resizePanel\"\r\n :changeParams=\"changeParams\"\r\n >\r\n\r\n <div\r\n style=\"background:#fff;\"\r\n v-domresize\r\n @domresize=\"resizeHead\"\r\n >\r\n\r\n <!-- 標題區 -->\r\n <div style=\"padding:10px 10px 10px 20px;\">\r\n <div :style=\"`display:flex; align-items:center; padding:${drawer?'5px':'5px 5px 5px 20px'};`\">\r\n\r\n <WIcon\r\n :icon=\"mdiShieldKeyOutline\"\r\n :color=\"'#000'\"\r\n :size=\"32\"\r\n ></WIcon>\r\n\r\n <div style=\"padding-left:12px;\">\r\n\r\n <div style=\"font-size:1.4rem; color:#000;\">\r\n {{$t('mmTokensList')}}\r\n </div>\r\n\r\n <div style=\"padding-top:2px; font-size:0.8rem; color:#666;\">\r\n {{$t('mmTokensListMsg')}}\r\n </div>\r\n\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <!-- 功能區 -->\r\n <div\r\n style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\"\r\n _v-if=\"showIsEditable || isEditable\"\r\n >\r\n\r\n <template v-if=\"showIsEditable\">\r\n\r\n <div style=\"padding:6px 0px 4px 4px;\">\r\n <WSwitch\r\n v-model=\"isEditable\"\r\n :text=\"$t('modeEdit')\"\r\n ></WSwitch>\r\n </div>\r\n\r\n <div style=\"padding-left:10px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"true\">\r\n\r\n <WPopup\r\n :isolated=\"true\"\r\n _show=\"\"\r\n _hide=\"\"\r\n >\r\n <template v-slot:trigger>\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('showTabCols')\"\r\n :icon=\"mdiTableHeadersEye\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :iconColorFocus=\"'#222'\"\r\n :shadow=\"false\"\r\n _click=\"\"\r\n ></WButtonCircle>\r\n </template>\r\n\r\n <template v-slot:content>\r\n <div style=\"padding:10px 0px 10px 0px;\">\r\n\r\n <div style=\"padding:7px 10px; font-size:0.85rem; color:#222; background:#f2f2f2;\">\r\n {{$t('showTabCols')}}\r\n </div>\r\n\r\n <div style=\"padding:7px 9px 0px 7px;\">\r\n <WInputCheckbox\r\n :items=\"tabKeysPick\"\r\n v-model=\"tabKeysShow\"\r\n @input=\"toggleTabKeys\"\r\n >\r\n <template v-slot=\"props\">\r\n <div style=\"padding-left:3px; display:flex; align-items:center; font-size:0.85rem; height:24px; cursor:pointer;\">\r\n {{getHead(props.item.data)}}\r\n </div>\r\n </template>\r\n </WInputCheckbox>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WPopup>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && hasItemsCheck\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('tokenDeleteCheckTokens')\"\r\n :icon=\"mdiTrashCanOutline\"\r\n :backgroundColor=\"'#fff'\"\r\n :backgroundColorHover=\"'#f2f2f2'\"\r\n :iconColor=\"'#444'\"\r\n :iconColorHover=\"'#222'\"\r\n :iconColorFocus=\"'#222'\"\r\n :shadow=\"false\"\r\n @click=\"deleteItemsCheck\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n <template v-if=\"isEditable && isModified\">\r\n\r\n <WButtonCircle\r\n :paddingStyle=\"{v:6,h:6}\"\r\n :tooltip=\"$t('saveChanges')\"\r\n :icon=\"mdiCloudUploadOutline\"\r\n :backgroundColor=\"'rgba(255,0,50,0.6)'\"\r\n :backgroundColorHover=\"'rgba(255,0,50,0.7)'\"\r\n :backgroundColorFocus=\"'rgba(255,0,50,0.7)'\"\r\n :iconColor=\"'#eee'\"\r\n :iconColorHover=\"'#fff'\"\r\n :iconColorFocus=\"'#fff'\"\r\n :shadow=\"false\"\r\n @click=\"saveTokens\"\r\n ></WButtonCircle>\r\n\r\n <div style=\"padding-left:4px;\"></div>\r\n\r\n </template>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <template\r\n v-if=\"!isLoading\"\r\n >\r\n\r\n <template v-if=\"items\">\r\n <WAggridVueDyn\r\n ref=\"rftable\"\r\n :style=\"`width:100%;`\"\r\n :height=\"contentHeight\"\r\n :opt=\"opt\"\r\n >\r\n </WAggridVueDyn>\r\n </template>\r\n\r\n </template>\r\n\r\n <div\r\n style=\"padding:10px 15px; font-size:0.8rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiShieldKeyOutline, mdiCloudUploadOutline, mdiTrashCanOutline, mdiTableHeadersEye } from '@mdi/js/mdi.js'\r\nimport ot from 'dayjs'\r\nimport get from 'lodash-es/get.js'\r\nimport set from 'lodash-es/set.js'\r\nimport each from 'lodash-es/each.js'\r\nimport size from 'lodash-es/size.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport istimemsTZ from 'wsemi/src/istimemsTZ.mjs'\r\nimport arrPull from 'wsemi/src/arrPull.mjs'\r\nimport domShowInputDatatime from 'wsemi/src/domShowInputDatatime.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WPopup from 'w-component-vue/src/components/WPopup.vue'\r\nimport WInputCheckbox from 'w-component-vue/src/components/WInputCheckbox.vue'\r\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WIcon,\r\n WSwitch,\r\n WButtonCircle,\r\n WPopup,\r\n WInputCheckbox,\r\n WAggridVueDyn,\r\n },\r\n props: {\r\n drawer: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n data: function() {\r\n return {\r\n mdiShieldKeyOutline,\r\n mdiCloudUploadOutline,\r\n mdiTrashCanOutline,\r\n mdiTableHeadersEye,\r\n\r\n panelWidth: 100,\r\n panelHeight: 100,\r\n headHeight: 100,\r\n\r\n isLoading: true,\r\n firstSetting: true,\r\n showIsEditable: false,\r\n isEditable: false,\r\n isModified: false,\r\n\r\n tabKeys: [\r\n 'id',\r\n 'token',\r\n 'userId',\r\n 'isApp',\r\n 'timeCreate',\r\n 'timeEnd',\r\n 'timeUpdate',\r\n ],\r\n tabKeysPick: [\r\n 'token',\r\n 'userId',\r\n 'isApp',\r\n 'timeCreate',\r\n 'timeEnd',\r\n 'timeUpdate',\r\n ],\r\n tabKeysShow: [\r\n 'token',\r\n 'userId',\r\n 'isApp',\r\n 'timeCreate',\r\n 'timeEnd',\r\n 'timeUpdate',\r\n ],\r\n\r\n tokens: [],\r\n items: [],\r\n itemsCheck: [],\r\n opt: null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n // console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //註冊至$dg供使用\r\n vo.$dg.toggleItemIsAppById = vo.toggleItemIsAppById\r\n vo.$dg.modifyItemTimeCreateById = vo.modifyItemTimeCreateById\r\n vo.$dg.modifyItemTimeEndById = vo.modifyItemTimeEndById\r\n vo.$dg.modifyItemTimeUpdateById = vo.modifyItemTimeUpdateById\r\n\r\n //firstSetting\r\n if (vo.firstSetting) {\r\n // console.log('webInfor', vo.webInfor)\r\n\r\n let showModeEditTokens = get(vo, 'webInfor.showModeEditTokens', '')\r\n vo.showIsEditable = showModeEditTokens === 'y'\r\n let modeEditTokens = get(vo, 'webInfor.modeEditTokens', '')\r\n vo.isEditable = modeEditTokens === 'y'\r\n\r\n vo.firstSetting = false\r\n }\r\n\r\n //token\r\n let token = vo.userToken\r\n // console.log('token', token)\r\n\r\n //getTokensList\r\n vo.$fapi.getTokensList(token)\r\n .then((res) => {\r\n // console.log(res)\r\n res = sortBy(res, 'timeCreate').reverse()\r\n vo.tokens = res\r\n })\r\n .catch((err) => {\r\n console.log(err)\r\n vo.errMsg = vo.$t('getDataError')\r\n })\r\n .finally(() => {\r\n vo.isLoading = false\r\n })\r\n\r\n },\r\n computed: {\r\n\r\n webInfor: function() {\r\n let wi = get(this, `$store.state.webInfor`)\r\n return wi\r\n },\r\n\r\n userToken: function() {\r\n let vo = this\r\n return get(vo, `$store.state.userToken`)\r\n },\r\n\r\n changeParams: function() {\r\n // console.log('computed changeParams')\r\n\r\n let vo = this\r\n\r\n //trigger\r\n let isEditable = vo.isEditable\r\n\r\n //items\r\n let items = cloneDeep(vo.tokens)\r\n\r\n //save\r\n vo.items = items\r\n\r\n //genOpt\r\n vo.genOpt({ isEditable })\r\n\r\n //isLoading\r\n vo.isLoading = false\r\n\r\n return ''\r\n },\r\n\r\n contentHeight: function() {\r\n let vo = this\r\n\r\n //h\r\n let h = vo.panelHeight - vo.headHeight\r\n h = Math.max(h, 0)\r\n\r\n return h\r\n },\r\n\r\n hasItemsCheck: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) > 0\r\n\r\n return b\r\n },\r\n\r\n hasItemCheckOne: function() {\r\n let vo = this\r\n\r\n //h\r\n let b = size(vo.itemsCheck) === 1\r\n\r\n return b\r\n },\r\n\r\n isError: function() {\r\n return ''\r\n },\r\n\r\n kpHead: function() {\r\n let vo = this\r\n\r\n let kp = {\r\n 'id': vo.$t('id'),\r\n 'token': vo.$t('token'),\r\n 'userId': vo.$t('userId'),\r\n 'isApp': vo.$t('isApp'),\r\n 'timeCreate': vo.$t('tokenTimeCreate'),\r\n 'timeEnd': vo.$t('tokenTimeEnd'),\r\n 'timeUpdate': vo.$t('tokenTimeUpdate'),\r\n }\r\n\r\n return kp\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resizePanel: function(msg) {\r\n // console.log('methods resizePanel', msg)\r\n\r\n let vo = this\r\n\r\n //panelWidth, panelHeight\r\n vo.panelWidth = msg.snew.offsetWidth\r\n vo.panelHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n resizeHead: function(msg) {\r\n // console.log('methods resizeHead', msg)\r\n\r\n let vo = this\r\n\r\n //headHeight\r\n vo.headHeight = msg.snew.offsetHeight\r\n\r\n },\r\n\r\n getHead: function(key) {\r\n // console.log('methods getHead', key)\r\n\r\n let vo = this\r\n\r\n let head = get(vo, `kpHead.${key}`, '')\r\n\r\n return head\r\n },\r\n\r\n genOpt: function() {\r\n // console.log('methods genOpt')\r\n\r\n let vo = this\r\n\r\n //default\r\n vo.itemsCheck = []\r\n\r\n //opt\r\n let opt = null\r\n if (size(vo.items) > 0) {\r\n\r\n //ks\r\n let ks = vo.tabKeys\r\n // console.log('ks', ks)\r\n\r\n //kpHead\r\n let kpHead = vo.kpHead\r\n\r\n //kpCellEditable, kpRowDrag, kpHeadCheckBox\r\n let kpCellEditable = {}\r\n let kpRowDrag = {}\r\n let kpHeadCheckBox = {}\r\n if (vo.isEditable) {\r\n kpCellEditable = {\r\n 'token': true,\r\n 'userId': (params) => {\r\n // console.log('params', params)\r\n\r\n //r\r\n let r = get(params, 'data', {})\r\n\r\n //isApp\r\n let isApp = get(r, 'isApp', '')\r\n // console.log('isApp', isApp)\r\n\r\n //b\r\n let b = isApp !== 'y'\r\n\r\n return b\r\n },\r\n }\r\n kpRowDrag = {\r\n 'token': true,\r\n }\r\n kpHeadCheckBox = {\r\n 'token': true,\r\n }\r\n }\r\n\r\n //kpHeadHide\r\n let kpHeadHide = {\r\n 'id': true,\r\n }\r\n if (true) {\r\n let tabKeysHide = arrPull(vo.tabKeysPick, vo.tabKeysShow)\r\n each(tabKeysHide, (k) => {\r\n kpHeadHide[k] = true\r\n })\r\n }\r\n\r\n //opt\r\n opt = {\r\n language: vo.$t('aggridLanguage'),\r\n rows: vo.items,\r\n keys: ks,\r\n kpHead,\r\n // autoFitColumn: true,\r\n defCellEditable: false, //vo.isEditable\r\n defHeadFilter: true,\r\n defCellAlignH: 'left',\r\n kpHeadHide,\r\n kpHeadFixLeft: {\r\n 'token': true,\r\n },\r\n defHeadMinWidth: 150,\r\n kpHeadWidth: {\r\n 'token': 300,\r\n 'userId': 300,\r\n 'isApp': 100,\r\n 'timeCreate': 220,\r\n 'timeEnd': 220,\r\n 'timeUpdate': 220,\r\n },\r\n kpHeadFilterType: {\r\n 'id': 'text',\r\n 'token': 'text',\r\n 'userId': 'text',\r\n 'isApp': 'text',\r\n 'timeCreate': 'text',\r\n 'timeEnd': 'text',\r\n 'timeUpdate': 'text',\r\n },\r\n kpCellEditable,\r\n kpRowDrag,\r\n kpHeadCheckBox,\r\n kpHeadFilter: {\r\n },\r\n kpHeadSort: {\r\n },\r\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\r\n 'timeCreate': false,\r\n 'timeEnd': false,\r\n 'timeUpdate': false,\r\n },\r\n kpCellRender: {\r\n 'userId': (v, k, r) => {\r\n // console.log('kpCellRender userId', v, k, r)\r\n\r\n //isApp\r\n let isApp = get(r, 'isApp', '')\r\n // console.log('isApp', isApp, k, r)\r\n\r\n //t\r\n let t = ``\r\n if (isApp !== 'y') {\r\n t = v\r\n }\r\n\r\n return t\r\n },\r\n 'isApp': (v, k, r) => {\r\n // console.log('kpCellRender isApp', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n let t = `\r\n <input type=\"checkbox\" ${v === 'y' ? 'checked' : ''} onclick=\"$vo.$dg.toggleItemIsAppById('${id}')\" ${vo.isEditable ? '' : 'disabled'} />\r\n `\r\n\r\n return t\r\n },\r\n 'timeCreate': (v, k, r) => {\r\n // console.log('kpCellRender timeCreate', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n //vv, vm\r\n let vv = ''\r\n let vm = vo.$t('tokenTimeEmpty')\r\n if (istimemsTZ(v)) { //原始數據為timemsTZ格式\r\n let vt = ot(v)\r\n vv = vt.format('YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n vm = vt.format('YYYY-MM-DD HH:mm')\r\n }\r\n // console.log('vv', vv)\r\n // console.log('vm', vm)\r\n\r\n //t\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\">\r\n <button style=\"width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\" onclick=\"$vo.$dg.modifyItemTimeCreateById(this,'${vv}','${id}')\" ${vo.isEditable ? '' : 'disabled'}>${vm}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n 'timeEnd': (v, k, r) => {\r\n // console.log('kpCellRender timeEnd', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n //vv, vm\r\n let vv = ''\r\n let vm = vo.$t('tokenTimeEmpty')\r\n if (istimemsTZ(v)) { //原始數據為timemsTZ格式\r\n let vt = ot(v)\r\n vv = vt.format('YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n vm = vt.format('YYYY-MM-DD HH:mm')\r\n }\r\n // console.log('vv', vv)\r\n // console.log('vm', vm)\r\n\r\n //t\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\">\r\n <button style=\"width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\" onclick=\"$vo.$dg.modifyItemTimeEndById(this,'${vv}','${id}')\" ${vo.isEditable ? '' : 'disabled'}>${vm}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n 'timeUpdate': (v, k, r) => {\r\n // console.log('kpCellRender timeUpdate', v, k, r)\r\n\r\n //id\r\n let id = get(r, 'id', '')\r\n // console.log('id', id, k, r)\r\n\r\n //vv, vm\r\n let vv = ''\r\n let vm = vo.$t('tokenTimeEmpty')\r\n if (istimemsTZ(v)) { //原始數據為timemsTZ格式\r\n let vt = ot(v)\r\n vv = vt.format('YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n vm = vt.format('YYYY-MM-DD HH:mm')\r\n }\r\n // console.log('vv', vv)\r\n // console.log('vm', vm)\r\n\r\n //t\r\n let t = `\r\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\">\r\n <button style=\"width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\" onclick=\"$vo.$dg.modifyItemTimeUpdateById(this,'${vv}','${id}')\" ${vo.isEditable ? '' : 'disabled'}>${vm}</button>\r\n </div>\r\n `\r\n\r\n return t\r\n },\r\n },\r\n rowsChange: (rs) => {\r\n // console.log('rowsChange', rs)\r\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n rowChecked: (rs) => {\r\n // console.log('rowChecked', rs)\r\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\r\n\r\n //save itemsCheck\r\n vo.itemsCheck = cloneDeep(rs)\r\n\r\n },\r\n }\r\n // console.log('opt', opt)\r\n\r\n }\r\n\r\n //save\r\n vo.opt = opt\r\n\r\n },\r\n\r\n refresh: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\r\n cmp.refresh()\r\n\r\n },\r\n\r\n toggleTabKeys: function() {\r\n let vo = this\r\n\r\n //cmp\r\n let cmp = get(vo, '$refs.rftable.$refs.$self')\r\n // console.log('cmp', cmp)\r\n\r\n //showKeys\r\n cmp.showKeys(vo.tabKeysShow)\r\n // console.log('tabKeysShow', vo.tabKeysShow)\r\n\r\n },\r\n\r\n toggleItemByKeyAndId: function(key, id) {\r\n // console.log('toggleItemByKeyAndId', key, id)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('userEditNoUserId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('userEditNoUserData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //v\r\n let _v = get(r, key, 'n')\r\n let v = _v === 'y' ? 'n' : 'y'\r\n // console.log(key, v)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].${key}`, v)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n toggleItemIsAppById: function(id) {\r\n // console.log('toggleItemIsAppById', id)\r\n\r\n let vo = this\r\n\r\n //toggleItemByKeyAndId\r\n vo.toggleItemByKeyAndId('isApp', id)\r\n\r\n },\r\n\r\n modifyItemByKeyAndId: function(key, ele, t, id) {\r\n // console.log('modifyItemByKeyAndId', ele, t, id)\r\n\r\n let vo = this\r\n\r\n //check\r\n if (!isestr(id)) {\r\n vo.$alert(`${vo.$t('tokenEditNoTokenId')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //timePrev, 須給予秒時間, 要滿足istime才能展示初始值\r\n let timePrev = ''\r\n if (istimemsTZ(t)) {\r\n timePrev = ot(t).format('YYYY-MM-DDTHH:mm:ss')\r\n }\r\n // console.log('timePrev', timePrev)\r\n\r\n //domShowInputDatatime\r\n let type = 'datetime-local' //'datetime-local', 'date'\r\n domShowInputDatatime(timePrev, { eleRef: ele, type })\r\n .then((timeNew) => {\r\n // console.log(k, 'timeNew', timeNew)\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //find\r\n let r = null\r\n let kr = null\r\n each(rows, (v, k) => {\r\n if (get(v, 'id', '') === id) {\r\n r = v\r\n kr = k\r\n return false //跳出\r\n }\r\n })\r\n\r\n //check\r\n if (!iseobj(r)) {\r\n vo.$alert(`${vo.$t('tokenEditNoTokenData')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //v\r\n let vt = ot(timeNew, 'YYYY-MM-DDTHH:mm') //domShowInputDatatime數據為年月日時分\r\n let v = vt.format('YYYY-MM-DDTHH:mm:ss.SSSZ') //轉回原始數據為timemsTZ格式\r\n // console.log('v', v)\r\n\r\n //set\r\n set(vo, `opt.rows[${kr}].${key}`, v)\r\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\r\n\r\n //refresh\r\n vo.refresh()\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n })\r\n\r\n },\r\n\r\n modifyItemTimeCreateById: function(ele, t, id) {\r\n // console.log('modifyItemTimeCreateById', ele, t, id)\r\n\r\n let vo = this\r\n\r\n //modifyItemByKeyAndId\r\n vo.modifyItemByKeyAndId('timeCreate', ele, t, id)\r\n\r\n },\r\n\r\n modifyItemTimeEndById: function(ele, t, id) {\r\n // console.log('modifyItemTimeEndById', ele, t, id)\r\n\r\n let vo = this\r\n\r\n //modifyItemByKeyAndId\r\n vo.modifyItemByKeyAndId('timeEnd', ele, t, id)\r\n\r\n },\r\n\r\n modifyItemTimeUpdateById: function(ele, t, id) {\r\n // console.log('modifyItemTimeUpdateById', ele, t, id)\r\n\r\n let vo = this\r\n\r\n //modifyItemByKeyAndId\r\n vo.modifyItemByKeyAndId('timeUpdate', ele, t, id)\r\n\r\n },\r\n\r\n deleteItemsCheck: function() {\r\n // console.log('method deleteItemsCheck')\r\n\r\n let vo = this\r\n\r\n //check\r\n if (size(vo.itemsCheck) === 0) {\r\n console.log(`size(vo.itemsCheck) === 0`, vo.itemsCheck)\r\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //cloneDeep\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //cloneDeep\r\n rows = cloneDeep(rows)\r\n\r\n //filter\r\n each(vo.itemsCheck, (v) => {\r\n // console.log('v', v)\r\n let id = get(v, 'data.id', '')\r\n if (!isestr(id)) {\r\n console.log(`invalid id`)\r\n return true //跳出換下一個\r\n }\r\n rows = filter(rows, (vv) => {\r\n return vv.id !== id\r\n })\r\n })\r\n\r\n //clear\r\n vo.itemsCheck = []\r\n\r\n //save\r\n vo.tokens = cloneDeep(rows) //直接更新由getTokensList取得的tokens, 連帶驅動computed重算, 故不用另外更新vo.items與vo.opt.rows\r\n // console.log('cloneDeep(vo.tokens)', cloneDeep(vo.tokens))\r\n\r\n //isModified\r\n vo.isModified = true\r\n\r\n },\r\n\r\n saveTokens: function() {\r\n // console.log('method saveTokens')\r\n\r\n let vo = this\r\n\r\n async function core() {\r\n let errTemp = null\r\n\r\n //show loading\r\n vo.$ui.updateLoading(true)\r\n\r\n //check\r\n if (isestr(vo.isError)) {\r\n vo.$alert(`${vo.isError}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //rows\r\n let rows = get(vo, 'opt.rows', [])\r\n\r\n //check\r\n if (size(rows) === 0) {\r\n // vo.$alert(`${vo.$t('tokenAddEmpty')}`, { type: 'error' })\r\n // return\r\n }\r\n\r\n //token\r\n let token = vo.userToken\r\n // console.log('token', token)\r\n\r\n //updateTokensList\r\n await vo.$fapi.updateTokensList(token, rows)\r\n .catch((err) => {\r\n errTemp = err\r\n })\r\n\r\n //check\r\n if (errTemp !== null) {\r\n vo.$alert(`${vo.$t('tokenSaveTokensFail')}: ${errTemp}`, { type: 'error' })\r\n return\r\n }\r\n\r\n //isModified\r\n vo.isModified = false\r\n\r\n //alert\r\n vo.$alert(vo.$t('tokenSaveTokensSuccess'))\r\n\r\n }\r\n\r\n //core\r\n core()\r\n // .then((res) => {\r\n // console.log('then', res)\r\n // })\r\n .catch((err) => {\r\n console.log('catch', err)\r\n vo.$alert(vo.$t('anUnexpectedErrorOccurred'), { type: 'error' })\r\n })\r\n .finally(() => {\r\n\r\n //hide loading\r\n vo.$ui.updateLoading(false)\r\n\r\n })\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n<style scoped>\r\n</style>\r\n\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentTokens.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentTokens.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContentTokens.vue?vue&type=template&id=1e40008c&scoped=true\"\nimport script from \"./LayoutContentTokens.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContentTokens.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1e40008c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"height\":\"100%\"},attrs:{\"changeParams\":_vm.changeParams},on:{\"domresize\":_vm.resizePanel}},[_c('div',{directives:[{name:\"domresize\",rawName:\"v-domresize\"}],staticStyle:{\"background\":\"#fff\"},on:{\"domresize\":_vm.resizeHead}},[_c('div',{staticStyle:{\"padding\":\"10px 10px 10px 20px\"}},[_c('div',{style:(`display:flex; align-items:center; padding:${_vm.drawer?'5px':'5px 5px 5px 20px'};`)},[_c('WIcon',{attrs:{\"icon\":_vm.mdiIpNetwork,\"color\":'#000',\"size\":32}}),_c('div',{staticStyle:{\"padding-left\":\"12px\"}},[_c('div',{staticStyle:{\"font-size\":\"1.4rem\",\"color\":\"#000\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmIpsList'))+\" \")]),_c('div',{staticStyle:{\"padding-top\":\"2px\",\"font-size\":\"0.8rem\",\"color\":\"#666\"}},[_vm._v(\" \"+_vm._s(_vm.$t('mmIpsListMsg'))+\" \")])])],1)]),_c('div',{staticStyle:{\"padding\":\"5px\",\"border-top\":\"1px solid #ddd\",\"display\":\"flex\",\"align-items\":\"center\"},attrs:{\"_v-if\":\"showIsEditable || isEditable\"}},[(_vm.showIsEditable)?[_c('div',{staticStyle:{\"padding\":\"6px 0px 4px 4px\"}},[_c('WSwitch',{attrs:{\"text\":_vm.$t('modeEdit')},model:{value:(_vm.isEditable),callback:function ($$v) {_vm.isEditable=$$v},expression:\"isEditable\"}})],1),_c('div',{staticStyle:{\"padding-left\":\"10px\"}})]:_vm._e(),(true)?[_c('WPopup',{attrs:{\"isolated\":true,\"_show\":\"\",\"_hide\":\"\"},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('showTabCols'),\"icon\":_vm.mdiTableHeadersEye,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"iconColor\":'#444',\"iconColorHover\":'#222',\"iconColorFocus\":'#222',\"shadow\":false,\"_click\":\"\"}})]},proxy:true},{key:\"content\",fn:function(){return [_c('div',{staticStyle:{\"padding\":\"10px 0px 10px 0px\"}},[_c('div',{staticStyle:{\"padding\":\"7px 10px\",\"font-size\":\"0.85rem\",\"color\":\"#222\",\"background\":\"#f2f2f2\"}},[_vm._v(\" \"+_vm._s(_vm.$t('showTabCols'))+\" \")]),_c('div',{staticStyle:{\"padding\":\"7px 9px 0px 7px\"}},[_c('WInputCheckbox',{attrs:{\"items\":_vm.tabKeysPick},on:{\"input\":_vm.toggleTabKeys},scopedSlots:_vm._u([{key:\"default\",fn:function(props){return [_c('div',{staticStyle:{\"padding-left\":\"3px\",\"display\":\"flex\",\"align-items\":\"center\",\"font-size\":\"0.85rem\",\"height\":\"24px\",\"cursor\":\"pointer\"}},[_vm._v(\" \"+_vm._s(_vm.getHead(props.item.data))+\" \")])]}}],null,false,286315898),model:{value:(_vm.tabKeysShow),callback:function ($$v) {_vm.tabKeysShow=$$v},expression:\"tabKeysShow\"}})],1)])]},proxy:true}],null,false,2452858936)}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.hasItemsCheck)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('ipDeleteCheckIps'),\"icon\":_vm.mdiTrashCanOutline,\"backgroundColor\":'#fff',\"backgroundColorHover\":'#f2f2f2',\"iconColor\":'#444',\"iconColorHover\":'#222',\"iconColorFocus\":'#222',\"shadow\":false},on:{\"click\":_vm.deleteItemsCheck}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e(),(_vm.isEditable && _vm.isModified)?[_c('WButtonCircle',{attrs:{\"paddingStyle\":{v:6,h:6},\"tooltip\":_vm.$t('saveChanges'),\"icon\":_vm.mdiCloudUploadOutline,\"backgroundColor\":'rgba(255,0,50,0.6)',\"backgroundColorHover\":'rgba(255,0,50,0.7)',\"backgroundColorFocus\":'rgba(255,0,50,0.7)',\"iconColor\":'#eee',\"iconColorHover\":'#fff',\"iconColorFocus\":'#fff',\"shadow\":false},on:{\"click\":_vm.saveIps}}),_c('div',{staticStyle:{\"padding-left\":\"4px\"}})]:_vm._e()],2)]),(!_vm.isLoading)?[(_vm.items)?[_c('WAggridVueDyn',{ref:\"rftable\",style:(`width:100%;`),attrs:{\"height\":_vm.contentHeight,\"opt\":_vm.opt}})]:_vm._e()]:_c('div',{staticStyle:{\"padding\":\"10px 15px\",\"font-size\":\"0.8rem\"}},[_vm._v(\" \"+_vm._s(_vm.$t('waitingData'))+\" \")])],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div\n style=\"height:100%;\"\n v-domresize\n @domresize=\"resizePanel\"\n :changeParams=\"changeParams\"\n >\n\n <div\n style=\"background:#fff;\"\n v-domresize\n @domresize=\"resizeHead\"\n >\n\n <!-- 標題區 -->\n <div style=\"padding:10px 10px 10px 20px;\">\n <div :style=\"`display:flex; align-items:center; padding:${drawer?'5px':'5px 5px 5px 20px'};`\">\n\n <WIcon\n :icon=\"mdiIpNetwork\"\n :color=\"'#000'\"\n :size=\"32\"\n ></WIcon>\n\n <div style=\"padding-left:12px;\">\n\n <div style=\"font-size:1.4rem; color:#000;\">\n {{$t('mmIpsList')}}\n </div>\n\n <div style=\"padding-top:2px; font-size:0.8rem; color:#666;\">\n {{$t('mmIpsListMsg')}}\n </div>\n\n </div>\n\n </div>\n </div>\n\n <!-- 功能區 -->\n <div\n style=\"padding:5px; border-top:1px solid #ddd; display:flex; align-items:center;\"\n _v-if=\"showIsEditable || isEditable\"\n >\n\n <template v-if=\"showIsEditable\">\n\n <div style=\"padding:6px 0px 4px 4px;\">\n <WSwitch\n v-model=\"isEditable\"\n :text=\"$t('modeEdit')\"\n ></WSwitch>\n </div>\n\n <div style=\"padding-left:10px;\"></div>\n\n </template>\n\n <template v-if=\"true\">\n\n <WPopup\n :isolated=\"true\"\n _show=\"\"\n _hide=\"\"\n >\n <template v-slot:trigger>\n <WButtonCircle\n :paddingStyle=\"{v:6,h:6}\"\n :tooltip=\"$t('showTabCols')\"\n :icon=\"mdiTableHeadersEye\"\n :backgroundColor=\"'#fff'\"\n :backgroundColorHover=\"'#f2f2f2'\"\n :iconColor=\"'#444'\"\n :iconColorHover=\"'#222'\"\n :iconColorFocus=\"'#222'\"\n :shadow=\"false\"\n _click=\"\"\n ></WButtonCircle>\n </template>\n\n <template v-slot:content>\n <div style=\"padding:10px 0px 10px 0px;\">\n\n <div style=\"padding:7px 10px; font-size:0.85rem; color:#222; background:#f2f2f2;\">\n {{$t('showTabCols')}}\n </div>\n\n <div style=\"padding:7px 9px 0px 7px;\">\n <WInputCheckbox\n :items=\"tabKeysPick\"\n v-model=\"tabKeysShow\"\n @input=\"toggleTabKeys\"\n >\n <template v-slot=\"props\">\n <div style=\"padding-left:3px; display:flex; align-items:center; font-size:0.85rem; height:24px; cursor:pointer;\">\n {{getHead(props.item.data)}}\n </div>\n </template>\n </WInputCheckbox>\n </div>\n\n </div>\n </template>\n </WPopup>\n\n <div style=\"padding-left:4px;\"></div>\n\n </template>\n\n <template v-if=\"isEditable && hasItemsCheck\">\n\n <WButtonCircle\n :paddingStyle=\"{v:6,h:6}\"\n :tooltip=\"$t('ipDeleteCheckIps')\"\n :icon=\"mdiTrashCanOutline\"\n :backgroundColor=\"'#fff'\"\n :backgroundColorHover=\"'#f2f2f2'\"\n :iconColor=\"'#444'\"\n :iconColorHover=\"'#222'\"\n :iconColorFocus=\"'#222'\"\n :shadow=\"false\"\n @click=\"deleteItemsCheck\"\n ></WButtonCircle>\n\n <div style=\"padding-left:4px;\"></div>\n\n </template>\n\n <template v-if=\"isEditable && isModified\">\n\n <WButtonCircle\n :paddingStyle=\"{v:6,h:6}\"\n :tooltip=\"$t('saveChanges')\"\n :icon=\"mdiCloudUploadOutline\"\n :backgroundColor=\"'rgba(255,0,50,0.6)'\"\n :backgroundColorHover=\"'rgba(255,0,50,0.7)'\"\n :backgroundColorFocus=\"'rgba(255,0,50,0.7)'\"\n :iconColor=\"'#eee'\"\n :iconColorHover=\"'#fff'\"\n :iconColorFocus=\"'#fff'\"\n :shadow=\"false\"\n @click=\"saveIps\"\n ></WButtonCircle>\n\n <div style=\"padding-left:4px;\"></div>\n\n </template>\n\n </div>\n\n </div>\n\n <template\n v-if=\"!isLoading\"\n >\n\n <template v-if=\"items\">\n <WAggridVueDyn\n ref=\"rftable\"\n :style=\"`width:100%;`\"\n :height=\"contentHeight\"\n :opt=\"opt\"\n >\n </WAggridVueDyn>\n </template>\n\n </template>\n\n <div\n style=\"padding:10px 15px; font-size:0.8rem;\"\n v-else\n >\n {{$t('waitingData')}}\n </div>\n\n </div>\n</template>\n\n<script>\nimport { mdiIpNetwork, mdiCloudUploadOutline, mdiTrashCanOutline, mdiTableHeadersEye } from '@mdi/js/mdi.js'\nimport ot from 'dayjs'\nimport get from 'lodash-es/get.js'\nimport set from 'lodash-es/set.js'\nimport each from 'lodash-es/each.js'\nimport size from 'lodash-es/size.js'\nimport filter from 'lodash-es/filter.js'\nimport sortBy from 'lodash-es/sortBy.js'\nimport cloneDeep from 'lodash-es/cloneDeep.js'\nimport isestr from 'wsemi/src/isestr.mjs'\nimport iseobj from 'wsemi/src/iseobj.mjs'\nimport istimemsTZ from 'wsemi/src/istimemsTZ.mjs'\nimport arrPull from 'wsemi/src/arrPull.mjs'\nimport domShowInputDatatime from 'wsemi/src/domShowInputDatatime.mjs'\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\nimport WSwitch from 'w-component-vue/src/components/WSwitch.vue'\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\nimport WPopup from 'w-component-vue/src/components/WPopup.vue'\nimport WInputCheckbox from 'w-component-vue/src/components/WInputCheckbox.vue'\nimport WAggridVueDyn from 'w-component-vue/src/components/WAggridVueDyn.vue'\n\n\nexport default {\n components: {\n WIcon,\n WSwitch,\n WButtonCircle,\n WPopup,\n WInputCheckbox,\n WAggridVueDyn,\n },\n props: {\n drawer: {\n type: Boolean,\n default: false,\n },\n },\n data: function() {\n return {\n mdiIpNetwork,\n mdiCloudUploadOutline,\n mdiTrashCanOutline,\n mdiTableHeadersEye,\n\n panelWidth: 100,\n panelHeight: 100,\n headHeight: 100,\n\n isLoading: true,\n firstSetting: true,\n showIsEditable: false,\n isEditable: false,\n isModified: false,\n\n tabKeys: [\n 'id',\n 'ip',\n 'timeBlocked',\n ],\n tabKeysPick: [\n 'ip',\n 'timeBlocked',\n ],\n tabKeysShow: [\n 'ip',\n 'timeBlocked',\n ],\n\n ips: [],\n items: [],\n itemsCheck: [],\n opt: null,\n\n }\n },\n mounted: function() {\n // console.log('mounted')\n\n let vo = this\n\n //註冊至$dg供使用\n vo.$dg.modifyItemTimeBlockedById = vo.modifyItemTimeBlockedById\n\n //firstSetting\n if (vo.firstSetting) {\n // console.log('webInfor', vo.webInfor)\n\n let showModeEditIps = get(vo, 'webInfor.showModeEditIps', '')\n vo.showIsEditable = showModeEditIps === 'y'\n let modeEditIps = get(vo, 'webInfor.modeEditIps', '')\n vo.isEditable = modeEditIps === 'y'\n\n vo.firstSetting = false\n }\n\n //token\n let token = vo.userToken\n // console.log('token', token)\n\n //getIpsList\n vo.$fapi.getIpsList(token)\n .then((res) => {\n // console.log(res)\n res = sortBy(res, 'ip').reverse()\n vo.ips = res\n })\n .catch((err) => {\n console.log(err)\n vo.errMsg = vo.$t('getDataError')\n })\n .finally(() => {\n vo.isLoading = false\n })\n\n },\n computed: {\n\n webInfor: function() {\n let wi = get(this, `$store.state.webInfor`)\n return wi\n },\n\n userToken: function() {\n let vo = this\n return get(vo, `$store.state.userToken`)\n },\n\n changeParams: function() {\n // console.log('computed changeParams')\n\n let vo = this\n\n //trigger\n let isEditable = vo.isEditable\n\n //items\n let items = cloneDeep(vo.ips)\n\n //save\n vo.items = items\n\n //genOpt\n vo.genOpt({ isEditable })\n\n //isLoading\n vo.isLoading = false\n\n return ''\n },\n\n contentHeight: function() {\n let vo = this\n\n //h\n let h = vo.panelHeight - vo.headHeight\n h = Math.max(h, 0)\n\n return h\n },\n\n hasItemsCheck: function() {\n let vo = this\n\n //h\n let b = size(vo.itemsCheck) > 0\n\n return b\n },\n\n hasItemCheckOne: function() {\n let vo = this\n\n //h\n let b = size(vo.itemsCheck) === 1\n\n return b\n },\n\n isError: function() {\n return ''\n },\n\n kpHead: function() {\n let vo = this\n\n let kp = {\n 'id': vo.$t('id'),\n 'ip': vo.$t('ip'),\n 'timeBlocked': vo.$t('ipTimeBlocked'),\n }\n\n return kp\n },\n\n },\n methods: {\n\n resizePanel: function(msg) {\n // console.log('methods resizePanel', msg)\n\n let vo = this\n\n //panelWidth, panelHeight\n vo.panelWidth = msg.snew.offsetWidth\n vo.panelHeight = msg.snew.offsetHeight\n\n },\n\n resizeHead: function(msg) {\n // console.log('methods resizeHead', msg)\n\n let vo = this\n\n //headHeight\n vo.headHeight = msg.snew.offsetHeight\n\n },\n\n getHead: function(key) {\n // console.log('methods getHead', key)\n\n let vo = this\n\n let head = get(vo, `kpHead.${key}`, '')\n\n return head\n },\n\n genOpt: function() {\n // console.log('methods genOpt')\n\n let vo = this\n\n //default\n vo.itemsCheck = []\n\n //opt\n let opt = null\n if (size(vo.items) > 0) {\n\n //ks\n let ks = vo.tabKeys\n // console.log('ks', ks)\n\n //kpHead\n let kpHead = vo.kpHead\n\n //kpCellEditable, kpRowDrag, kpHeadCheckBox\n let kpCellEditable = {}\n let kpRowDrag = {}\n let kpHeadCheckBox = {}\n if (vo.isEditable) {\n kpCellEditable = {\n 'ip': true,\n }\n kpRowDrag = {\n 'ip': true,\n }\n kpHeadCheckBox = {\n 'ip': true,\n }\n }\n\n //kpHeadHide\n let kpHeadHide = {\n 'id': true,\n }\n if (true) {\n let tabKeysHide = arrPull(vo.tabKeysPick, vo.tabKeysShow)\n each(tabKeysHide, (k) => {\n kpHeadHide[k] = true\n })\n }\n\n //opt\n opt = {\n language: vo.$t('aggridLanguage'),\n rows: vo.items,\n keys: ks,\n kpHead,\n // autoFitColumn: true,\n defCellEditable: false, //vo.isEditable\n defHeadFilter: true,\n defCellAlignH: 'left',\n kpHeadHide,\n kpHeadFixLeft: {\n 'ip': true,\n },\n defHeadMinWidth: 150,\n kpHeadWidth: {\n 'ip': 300,\n 'timeBlocked': 220,\n },\n kpHeadFilterType: {\n 'id': 'text',\n 'ip': 'text',\n 'timeBlocked': 'text',\n },\n kpCellEditable,\n kpRowDrag,\n kpHeadCheckBox,\n kpHeadFilter: {\n },\n kpHeadSort: {\n },\n kpHeadFocusHighlight: { //雖然效果不完全, 但因按鈕與cell有padding可被點擊, 故還是需要開啟\n 'timeBlocked': false,\n },\n kpCellRender: {\n 'timeBlocked': (v, k, r) => {\n // console.log('kpCellRender timeBlocked', v, k, r)\n\n //id\n let id = get(r, 'id', '')\n // console.log('id', id, k, r)\n\n //vv, vm\n let vv = ''\n let vm = vo.$t('ipTimeEmpty')\n if (istimemsTZ(v)) { //原始數據為timemsTZ格式\n let vt = ot(v)\n vv = vt.format('YYYY-MM-DDTHH:mm:ss.SSSZ')\n vm = vt.format('YYYY-MM-DD HH:mm')\n }\n // console.log('vv', vv)\n // console.log('vm', vm)\n\n //t\n let t = `\n <div onclick=\"event.stopPropagation();event.preventDefault();\" onmousedown=\"event.stopPropagation();event.preventDefault();\">\n <button style=\"width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;\" onclick=\"$vo.$dg.modifyItemTimeBlockedById(this,'${vv}','${id}')\" ${vo.isEditable ? '' : 'disabled'}>${vm}</button>\n </div>\n `\n\n return t\n },\n },\n rowsChange: (rs) => {\n // console.log('rowsChange', rs)\n // console.log('rowsChange cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\n\n //isModified\n vo.isModified = true\n\n },\n rowChecked: (rs) => {\n // console.log('rowChecked', rs)\n // console.log('rowChecked cloneDeep(vo.opt.rows)', cloneDeep(vo.opt.rows))\n\n //save itemsCheck\n vo.itemsCheck = cloneDeep(rs)\n\n },\n }\n // console.log('opt', opt)\n\n }\n\n //save\n vo.opt = opt\n\n },\n\n refresh: function() {\n let vo = this\n\n //cmp\n let cmp = get(vo, '$refs.rftable.$refs.$self')\n // console.log('cmp', cmp)\n\n //refresh, 因set不會觸發kpCellRender, 故須另外調用組件函數refresh, 進而觸發kpCellRender, 使能更新數據\n cmp.refresh()\n\n },\n\n toggleTabKeys: function() {\n let vo = this\n\n //cmp\n let cmp = get(vo, '$refs.rftable.$refs.$self')\n // console.log('cmp', cmp)\n\n //showKeys\n cmp.showKeys(vo.tabKeysShow)\n // console.log('tabKeysShow', vo.tabKeysShow)\n\n },\n\n modifyItemByKeyAndId: function(key, ele, t, id) {\n // console.log('modifyItemByKeyAndId', ele, t, id)\n\n let vo = this\n\n //check\n if (!isestr(id)) {\n vo.$alert(`${vo.$t('ipEditNoIpId')}`, { type: 'error' })\n return\n }\n\n //timePrev, 須給予秒時間, 要滿足istime才能展示初始值\n let timePrev = ''\n if (istimemsTZ(t)) {\n timePrev = ot(t).format('YYYY-MM-DDTHH:mm:ss')\n }\n // console.log('timePrev', timePrev)\n\n //domShowInputDatatime\n let type = 'datetime-local' //'datetime-local', 'date'\n domShowInputDatatime(timePrev, { eleRef: ele, type })\n .then((timeNew) => {\n // console.log(k, 'timeNew', timeNew)\n\n //rows\n let rows = get(vo, 'opt.rows', [])\n\n //find\n let r = null\n let kr = null\n each(rows, (v, k) => {\n if (get(v, 'id', '') === id) {\n r = v\n kr = k\n return false //跳出\n }\n })\n\n //check\n if (!iseobj(r)) {\n vo.$alert(`${vo.$t('ipEditNoIpData')}`, { type: 'error' })\n return\n }\n\n //v\n let vt = ot(timeNew, 'YYYY-MM-DDTHH:mm') //domShowInputDatatime數據為年月日時分\n let v = vt.format('YYYY-MM-DDTHH:mm:ss.SSSZ') //轉回原始數據為timemsTZ格式\n // console.log('v', v)\n\n //set\n set(vo, `opt.rows[${kr}].${key}`, v)\n // console.log('vo.opt.rows[kr]', cloneDeep(vo.opt.rows[kr]))\n\n //refresh\n vo.refresh()\n\n //isModified\n vo.isModified = true\n\n })\n\n },\n\n modifyItemTimeBlockedById: function(ele, t, id) {\n // console.log('modifyItemTimeBlockedById', ele, t, id)\n\n let vo = this\n\n //modifyItemByKeyAndId\n vo.modifyItemByKeyAndId('timeBlocked', ele, t, id)\n\n },\n\n deleteItemsCheck: function() {\n // console.log('method deleteItemsCheck')\n\n let vo = this\n\n //check\n if (size(vo.itemsCheck) === 0) {\n console.log(`size(vo.itemsCheck) === 0`, vo.itemsCheck)\n vo.$alert(`${vo.$t('anUnexpectedErrorOccurred')}`, { type: 'error' })\n return\n }\n\n //cloneDeep\n let rows = get(vo, 'opt.rows', [])\n\n //cloneDeep\n rows = cloneDeep(rows)\n\n //filter\n each(vo.itemsCheck, (v) => {\n // console.log('v', v)\n let id = get(v, 'data.id', '')\n if (!isestr(id)) {\n console.log(`invalid id`)\n return true //跳出換下一個\n }\n rows = filter(rows, (vv) => {\n return vv.id !== id\n })\n })\n\n //clear\n vo.itemsCheck = []\n\n //save\n vo.ips = cloneDeep(rows) //直接更新由getIpsList取得的ips, 連帶驅動computed重算, 故不用另外更新vo.items與vo.opt.rows\n // console.log('cloneDeep(vo.ips)', cloneDeep(vo.ips))\n\n //isModified\n vo.isModified = true\n\n },\n\n saveIps: function() {\n // console.log('method saveIps')\n\n let vo = this\n\n async function core() {\n let errTemp = null\n\n //show loading\n vo.$ui.updateLoading(true)\n\n //check\n if (isestr(vo.isError)) {\n vo.$alert(`${vo.isError}`, { type: 'error' })\n return\n }\n\n //rows\n let rows = get(vo, 'opt.rows', [])\n\n //check\n if (size(rows) === 0) {\n // vo.$alert(`${vo.$t('ipAddEmpty')}`, { type: 'error' })\n // return\n }\n\n //token\n let token = vo.userToken\n // console.log('token', token)\n\n //updateIpsList\n await vo.$fapi.updateIpsList(token, rows)\n .catch((err) => {\n errTemp = err\n })\n\n //check\n if (errTemp !== null) {\n vo.$alert(`${vo.$t('ipSaveIpsFail')}: ${errTemp}`, { type: 'error' })\n return\n }\n\n //isModified\n vo.isModified = false\n\n //alert\n vo.$alert(vo.$t('ipSaveIpsSuccess'))\n\n }\n\n //core\n core()\n // .then((res) => {\n // console.log('then', res)\n // })\n .catch((err) => {\n console.log('catch', err)\n vo.$alert(vo.$t('anUnexpectedErrorOccurred'), { type: 'error' })\n })\n .finally(() => {\n\n //hide loading\n vo.$ui.updateLoading(false)\n\n })\n\n },\n\n }\n}\n</script>\n<style scoped>\n</style>\n\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentIps.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContentIps.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContentIps.vue?vue&type=template&id=536c7c04&scoped=true\"\nimport script from \"./LayoutContentIps.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContentIps.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"536c7c04\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div\r\n style=\"height:100%; width:100%;\"\r\n v-domresize\r\n @domresize=\"resize\"\r\n >\r\n\r\n <template v-if=\"syncState\">\r\n\r\n <WDrawer\r\n :style=\"`height:${panelHeight}px; width:100%;`\"\r\n v-model=\"drawer\"\r\n :drawerWidth.sync=\"drawerWidth\"\r\n :drawerWidthMin=\"drawerWidthMin\"\r\n :drawerWidthMax=\"drawerWidthMax\"\r\n :mode=\"'from-left'\"\r\n :dragDrawerWidth=\"true\"\r\n :autoSwitchToHide=\"true\"\r\n :autoSwitchToShow=\"true\"\r\n :autoSwitchToFloat=\"true\"\r\n :switchWidth=\"drawerWidth*2.3\"\r\n >\r\n\r\n <template v-slot:drawer=\"props\">\r\n <div :style=\"`height:${props.height}px; background:#fff; position:relative;`\">\r\n\r\n <WListVertical\r\n style=\"height:100%;\"\r\n :items=\"menus\"\r\n :itemActive=\"menuActive\"\r\n :item-text-color=\"'#222'\"\r\n :item-text-color-hover=\"'#444'\"\r\n :item-text-color-active=\"'#EF6C00'\"\r\n :item-icon-color=\"'#222'\"\r\n :item-icon-color-hover=\"'#444'\"\r\n :item-icon-color-active=\"'#EF6C00'\"\r\n :item-background-color=\"'#fff'\"\r\n :item-background-color-hover=\"'#f2f2f2'\"\r\n :item-background-color-active=\"'#FFF3E0'\"\r\n :paddingStyle=\"{v:15,h:15}\"\r\n @click=\"(menu)=>{menuKey=menu.key}\"\r\n ></WListVertical>\r\n\r\n <div\r\n :style=\"`position:absolute; top:2px; right:4px;`\"\r\n v-if=\"drawer\"\r\n >\r\n <WButtonCircle\r\n :paddingStyle=\"{h:2,v:2}\"\r\n :icon=\"mdiArrowLeftBoldHexagonOutline\"\r\n :iconSize=\"20\"\r\n :backgroundColor=\"'rgba(255,255,255,0.1)'\"\r\n :backgroundColorHover=\"'rgba(255,255,255,0.4)'\"\r\n :backgroundColorFocus=\"'rgba(255,255,255,0.7)'\"\r\n :borderColor=\"'transparent'\"\r\n :borderColorHover=\"'transparent'\"\r\n :borderColorFocus=\"'transparent'\"\r\n _tooltip=\"$t('menuTreeHide')\"\r\n :shadow=\"false\"\r\n @click=\"drawer=false\"\r\n ></WButtonCircle>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n\r\n <template v-slot:content=\"props\">\r\n <div :style=\"`height:${props.height}px; width:${props.width}px; position:relative;`\">\r\n\r\n <template>\r\n\r\n <LayoutContentStaInfor\r\n v-if=\"menuKey==='mmStaInfor'\"\r\n ></LayoutContentStaInfor>\r\n\r\n <LayoutContentUserInfor\r\n v-if=\"menuKey==='mmUserInfor'\"\r\n ></LayoutContentUserInfor>\r\n\r\n <LayoutContentUsers\r\n v-if=\"menuKey==='mmUsersList'\"\r\n ></LayoutContentUsers>\r\n\r\n <LayoutContentTokens\r\n v-if=\"menuKey==='mmTokensList'\"\r\n ></LayoutContentTokens>\r\n\r\n <LayoutContentIps\r\n v-if=\"menuKey==='mmIpsList'\"\r\n ></LayoutContentIps>\r\n\r\n </template>\r\n\r\n <div\r\n :style=\"`position:absolute; top:3px; left:5px;`\"\r\n v-if=\"!drawer\"\r\n >\r\n <WButtonCircle\r\n :paddingStyle=\"{h:2,v:2}\"\r\n :icon=\"mdiArrowRightBoldHexagonOutline\"\r\n :iconSize=\"20\"\r\n :backgroundColor=\"'rgba(255,255,255,0.1)'\"\r\n :backgroundColorHover=\"'rgba(255,255,255,0.4)'\"\r\n :backgroundColorFocus=\"'rgba(255,255,255,0.7)'\"\r\n :borderColor=\"'transparent'\"\r\n :borderColorHover=\"'transparent'\"\r\n :borderColorFocus=\"'transparent'\"\r\n _tooltip=\"$t('menuTreeShow')\"\r\n :shadow=\"false\"\r\n @click=\"drawer=true\"\r\n ></WButtonCircle>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n\r\n </WDrawer>\r\n\r\n </template>\r\n\r\n <div\r\n style=\"padding:20px; font-size:0.9rem;\"\r\n v-else\r\n >\r\n {{$t('waitingData')}}\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiChartBar, mdiInformationVariantCircleOutline, mdiIpNetwork, mdiShieldKeyOutline, mdiArrowLeftBoldHexagonOutline, mdiArrowRightBoldHexagonOutline, mdiAccountGroupOutline } from '@mdi/js/mdi.js'\r\nimport get from 'lodash-es/get.js'\r\nimport find from 'lodash-es/find.js'\r\nimport WDrawer from 'w-component-vue/src/components/WDrawer.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WListVertical from 'w-component-vue/src/components/WListVertical.vue'\r\nimport LayoutContentStaInfor from './LayoutContentStaInfor.vue'\r\nimport LayoutContentUserInfor from './LayoutContentUserInfor.vue'\r\nimport LayoutContentUsers from './LayoutContentUsers.vue'\r\nimport LayoutContentTokens from './LayoutContentTokens.vue'\r\nimport LayoutContentIps from './LayoutContentIps.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WDrawer,\r\n WButtonCircle,\r\n WListVertical,\r\n LayoutContentStaInfor,\r\n LayoutContentUserInfor,\r\n LayoutContentUsers,\r\n LayoutContentTokens,\r\n LayoutContentIps,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiArrowLeftBoldHexagonOutline,\r\n mdiArrowRightBoldHexagonOutline,\r\n\r\n menuKey: 'mmStaInfor',\r\n\r\n panelWidth: 0,\r\n panelHeight: 0,\r\n\r\n drawer: true,\r\n drawerWidth: 230,\r\n drawerWidthMin: 150,\r\n drawerWidthMax: 350,\r\n\r\n }\r\n },\r\n computed: {\r\n\r\n syncState: function() {\r\n let vo = this\r\n return get(vo, '$store.state.syncState')\r\n },\r\n\r\n menus: function() {\r\n let vo = this\r\n let ms = [\r\n {\r\n key: 'mmStaInfor',\r\n text: vo.$t('mmStaInfor'),\r\n icon: mdiChartBar,\r\n },\r\n {\r\n key: 'mmUserInfor',\r\n text: vo.$t('mmUserInfor'),\r\n icon: mdiInformationVariantCircleOutline,\r\n },\r\n {\r\n key: 'mmUsersList',\r\n text: vo.$t('mmUsersList'),\r\n icon: mdiAccountGroupOutline,\r\n },\r\n {\r\n key: 'mmTokensList',\r\n text: vo.$t('mmTokensList'),\r\n icon: mdiShieldKeyOutline,\r\n },\r\n {\r\n key: 'mmIpsList',\r\n text: vo.$t('mmIpsList'),\r\n icon: mdiIpNetwork,\r\n },\r\n ]\r\n return ms\r\n },\r\n\r\n menuActive: function() {\r\n let vo = this\r\n let r = find(vo.menus, { key: vo.menuKey })\r\n // console.log(r)\r\n return r\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n resize: function(msg) {\r\n // console.log('methods resize', msg)\r\n\r\n let vo = this\r\n\r\n //save\r\n vo.panelWidth = msg.snew.clientWidth\r\n vo.panelHeight = msg.snew.clientHeight\r\n // console.log('vo.panelHeight', vo.panelHeight)\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContent.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./LayoutContent.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContent.vue?vue&type=template&id=4b7f92f4&scoped=true\"\nimport script from \"./LayoutContent.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContent.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4b7f92f4\",\n null\n \n)\n\nexport default component.exports","<template>\r\n <div style=\"height:100svh; background:#f5f5f5;\">\r\n\r\n <!-- menu top, 因窄版導致名稱換行故須使用overflow-y:hidden -->\r\n <div :style=\"`height:${heightToolbar}px; overflow-y:hidden; padding:0px 10px; background:#fff; border-bottom:1px solid #ccc; display:flex; align-items:center;`\">\r\n\r\n <div style=\"padding-left:5px;\">\r\n <div style=\"display:flex; align-items:center;\">\r\n\r\n <div\r\n style=\"padding-right:10px; display:flex; align-items:center;\"\r\n v-if=\"webLogo\"\r\n >\r\n <!-- 因chrome渲染機制變更須添加min-width避免被壓縮至無寬度 -->\r\n <img style=\"width:36px; min-width:36px; height:36px;\" :src=\"webLogo\" />\r\n </div>\r\n\r\n <div style=\"white-space:nowrap;\">\r\n <div style=\"font-size:1.2rem; color:#000;\">{{webName}}</div>\r\n <div style=\"font-size:0.8rem; color:#666;\">{{$t('webDescription')}}</div>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n\r\n <div style=\"width:100%;\"></div>\r\n\r\n <div\r\n style=\"padding-right:10px; white-space:nowrap;\"\r\n v-if=\"showLangSelect\"\r\n >\r\n <WTextSelect\r\n style=\"width:100px;\"\r\n :items=\"keysLang\"\r\n :value=\"lang\"\r\n @input=\"toggleLang\"\r\n >\r\n <template v-slot:select=\"props\">\r\n {{getLangText(props.item)}}\r\n </template>\r\n <template v-slot:item=\"props\">\r\n {{getLangText(props.item)}}\r\n </template>\r\n </WTextSelect>\r\n </div>\r\n\r\n <div style=\"padding-right:10px; display:flex; align-items:center;\">\r\n\r\n <WPopup\r\n :isolated=\"true\"\r\n _show=\"\"\r\n _hide=\"\"\r\n >\r\n <template v-slot:trigger>\r\n\r\n <div style=\"display:flex; align-items:center; white-space:nowrap; user-select:none; cursor:pointer;\">\r\n <div style=\"padding-top:2px;\">\r\n <WIcon\r\n :icon=\"mdiAccountCircleOutline\"\r\n :size=\"20\"\r\n ></WIcon>\r\n </div>\r\n <div style=\"padding-left:5px; font-size:0.85rem;\">\r\n {{userName}}\r\n </div>\r\n </div>\r\n\r\n </template>\r\n <template v-slot:content>\r\n <div style=\"padding:10px;\">\r\n\r\n <div\r\n style=\"display:flex; align-items:center; white-space:nowrap; user-select:none; cursor:pointer;\"\r\n @click=\"logout\"\r\n >\r\n <div style=\"padding-top:2px;\">\r\n <WIcon\r\n :icon=\"mdiLogoutVariant\"\r\n :size=\"18\"\r\n ></WIcon>\r\n </div>\r\n <div style=\"padding-left:5px; font-size:0.8rem;\">\r\n {{$t('logout')}}\r\n </div>\r\n </div>\r\n\r\n </div>\r\n </template>\r\n </WPopup>\r\n\r\n </div>\r\n\r\n </div>\r\n\r\n <div :style=\"`height:calc( 100% - ${heightToolbar}px );`\">\r\n <LayoutContent\r\n ></LayoutContent>\r\n </div>\r\n\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport { mdiAccountCircleOutline, mdiLogoutVariant } from '@mdi/js/mdi.js'\r\nimport get from 'lodash-es/get.js'\r\n// import cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport WIcon from 'w-component-vue/src/components/WIcon.vue'\r\nimport WPopup from 'w-component-vue/src/components/WPopup.vue'\r\nimport WButtonCircle from 'w-component-vue/src/components/WButtonCircle.vue'\r\nimport WTextSelect from 'w-component-vue/src/components/WTextSelect.vue'\r\nimport LayoutContent from './LayoutContent.vue'\r\n\r\n\r\nexport default {\r\n components: {\r\n WIcon,\r\n WPopup,\r\n WButtonCircle,\r\n WTextSelect,\r\n LayoutContent,\r\n },\r\n props: {\r\n },\r\n data: function() {\r\n return {\r\n mdiAccountCircleOutline,\r\n mdiLogoutVariant,\r\n\r\n t: null,\r\n\r\n firstSetting: true,\r\n\r\n showLangSelect: false,\r\n\r\n keysLang: [\r\n 'eng',\r\n 'cht',\r\n ],\r\n kpLangSelect: {\r\n 'eng': 'English',\r\n 'cht': '中文',\r\n },\r\n\r\n drawer: true, //null,\r\n\r\n }\r\n },\r\n mounted: function() {\r\n // console.log('mounted')\r\n\r\n let vo = this\r\n\r\n //firstSetting\r\n if (vo.firstSetting) {\r\n // console.log('webInfor', vo.webInfor)\r\n let showLanguage = get(vo, 'webInfor.showLanguage', '')\r\n // console.log('showLanguage', showLanguage)\r\n vo.showLangSelect = showLanguage === 'y'\r\n let language = get(vo, 'webInfor.language', '')\r\n // console.log('language', language)\r\n vo.$ui.setLang(language, 'layout mounted')\r\n vo.firstSetting = false\r\n }\r\n\r\n //setInterval\r\n vo.t = setInterval(() => {\r\n if (isestr(vo.userToken)) {\r\n\r\n // console.log('refreshToken...', vo.userToken)\r\n // vo.$fapi.refreshToken(vo.userToken)\r\n // .then((timeEnd) => {\r\n // console.log('refreshToken then', timeEnd)\r\n // })\r\n // .catch((err) => {\r\n // console.log('refreshToken catch', err)\r\n\r\n // //logout, 登出與轉跳登入頁\r\n // vo.logout()\r\n\r\n // })\r\n\r\n // console.log('checkToken...', vo.userToken)\r\n vo.$fapi.checkToken(vo.userToken) //斷線有重試機制, resolve僅回傳true, reject代表無效token或檢測token發生錯誤\r\n .catch((err) => {\r\n console.log('checkToken catch', err)\r\n vo.logout() //登出與轉跳登入頁\r\n })\r\n\r\n }\r\n }, 1 * 1000) //每1min更新\r\n\r\n },\r\n beforeDestroy: function() {\r\n // console.log('beforeDestroy')\r\n\r\n let vo = this\r\n\r\n //clearInterval\r\n clearInterval(vo.t)\r\n\r\n },\r\n computed: {\r\n\r\n viewState: function() {\r\n let vo = this\r\n return get(vo, '$store.state.viewState', '')\r\n },\r\n\r\n heightToolbar: function() {\r\n let vo = this\r\n return get(vo, `$store.state.heightToolbar`, 0)\r\n },\r\n\r\n userToken: function() {\r\n let vo = this\r\n return get(vo, `$store.state.userToken`)\r\n },\r\n\r\n webInfor: function() {\r\n let wi = get(this, `$store.state.webInfor`)\r\n return wi\r\n },\r\n\r\n webName: {\r\n get() {\r\n let vo = this\r\n let c = vo.$t('webName', '')\r\n // console.log('get webName1', c)\r\n if (!isestr(c)) {\r\n c = vo.$t('waitingData', '')\r\n }\r\n // console.log('get webName2', c)\r\n document.title = c //更換網頁title\r\n return c\r\n },\r\n // set(value) {\r\n // return value\r\n // },\r\n },\r\n\r\n webLogo: function() {\r\n let vo = this\r\n return get(vo, `$store.state.webInfor.webLogo`, '')\r\n },\r\n\r\n lang: function() {\r\n let vo = this\r\n return get(vo, `$store.state.lang`, '')\r\n },\r\n\r\n userSelf: function() {\r\n let vo = this\r\n return get(vo, `$store.state.userSelf`, '')\r\n },\r\n\r\n userName: function() {\r\n let vo = this\r\n return get(vo, `userSelf.name`, '')\r\n },\r\n\r\n },\r\n methods: {\r\n\r\n getLangText: function(lang) {\r\n // console.log('methods getLangText', lang)\r\n\r\n let vo = this\r\n\r\n let t = get(vo, `kpLangSelect.${lang}`, '')\r\n\r\n return t\r\n },\r\n\r\n toggleLang: function(lang) {\r\n // console.log('methods toggleLang', lang)\r\n\r\n let vo = this\r\n\r\n //setLang\r\n vo.$ui.setLang(lang, 'toggle')\r\n\r\n },\r\n\r\n logout: function() {\r\n // console.log('methods logout')\r\n\r\n let vo = this\r\n\r\n //logout\r\n vo.$ui.logout()\r\n .then(() => {\r\n\r\n //登出時提交變更viewState返回登入頁\r\n vo.$ui.updateViewState('login')\r\n console.log(`logout, goto view['login'] page`)\r\n\r\n })\r\n .catch((err) => {\r\n console.log(`logout err[${err}]`)\r\n })\r\n\r\n },\r\n\r\n }\r\n}\r\n</script>\r\n\r\n<style scoped>\r\n</style>\r\n","import mod from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Layout.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Layout.vue?vue&type=template&id=5cef4991&scoped=true\"\nimport script from \"./Layout.vue?vue&type=script&lang=js\"\nexport * from \"./Layout.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5cef4991\",\n null\n \n)\n\nexport default component.exports","<template>\n <div\n v-domresize\n @domresize=\"resize\"\n >\n\n <template v-if=\"!autoLogining\">\n\n <PageLogin v-if=\"viewState==='login'\"></PageLogin>\n\n <Layout v-if=\"viewState==='backstage'\"></Layout>\n\n </template>\n\n <div\n style=\"position:absolute; top:0px; left:0px; width:100%; height:100%; display:flex; align-items:center; justify-content:center;\"\n v-else\n >\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"30px\" height=\"30px\" viewBox=\"0 0 24 24\"><rect width=\"9\" height=\"9\" x=\"1.5\" y=\"1.5\" fill=\"currentColor\" rx=\"1\"><animate id=\"svgSpinnersBlocksScale0\" attributeName=\"x\" begin=\"0;svgSpinnersBlocksScale1.end+0.15s\" dur=\"0.6s\" keyTimes=\"0;.2;1\" values=\"1.5;.5;1.5\"/><animate attributeName=\"y\" begin=\"0;svgSpinnersBlocksScale1.end+0.15s\" dur=\"0.6s\" keyTimes=\"0;.2;1\" values=\"1.5;.5;1.5\"/><animate attributeName=\"width\" begin=\"0;svgSpinnersBlocksScale1.end+0.15s\" dur=\"0.6s\" keyTimes=\"0;.2;1\" values=\"9;11;9\"/><animate attributeName=\"height\" begin=\"0;svgSpinnersBlocksScale1.end+0.15s\" dur=\"0.6s\" keyTimes=\"0;.2;1\" values=\"9;11;9\"/></rect><rect width=\"9\" height=\"9\" x=\"13.5\" y=\"1.5\" fill=\"currentColor\" rx=\"1\"><animate attributeName=\"x\" begin=\"svgSpinnersBlocksScale0.begin+0.15s\" dur=\"0.6s\" keyTimes=\"0;.2;1\" values=\"13.5;12.5;13.5\"/><animate attributeName=\"y\" begin=\"svgSpinnersBlocksScale0.begin+0.15s\" dur=\"0.6s\" keyTimes=\"0;.2;1\" values=\"1.5;.5;1.5\"/><animate attributeName=\"width\" begin=\"svgSpinnersBlocksScale0.begin+0.15s\" dur=\"0.6s\" keyTimes=\"0;.2;1\" values=\"9;11;9\"/><animate attributeName=\"height\" begin=\"svgSpinnersBlocksScale0.begin+0.15s\" dur=\"0.6s\" keyTimes=\"0;.2;1\" values=\"9;11;9\"/></rect><rect width=\"9\" height=\"9\" x=\"13.5\" y=\"13.5\" fill=\"currentColor\" rx=\"1\"><animate attributeName=\"x\" begin=\"svgSpinnersBlocksScale0.begin+0.3s\" dur=\"0.6s\" keyTimes=\"0;.2;1\" values=\"13.5;12.5;13.5\"/><animate attributeName=\"y\" begin=\"svgSpinnersBlocksScale0.begin+0.3s\" dur=\"0.6s\" keyTimes=\"0;.2;1\" values=\"13.5;12.5;13.5\"/><animate attributeName=\"width\" begin=\"svgSpinnersBlocksScale0.begin+0.3s\" dur=\"0.6s\" keyTimes=\"0;.2;1\" values=\"9;11;9\"/><animate attributeName=\"height\" begin=\"svgSpinnersBlocksScale0.begin+0.3s\" dur=\"0.6s\" keyTimes=\"0;.2;1\" values=\"9;11;9\"/></rect><rect width=\"9\" height=\"9\" x=\"1.5\" y=\"13.5\" fill=\"currentColor\" rx=\"1\"><animate id=\"svgSpinnersBlocksScale1\" attributeName=\"x\" begin=\"svgSpinnersBlocksScale0.begin+0.45s\" dur=\"0.6s\" keyTimes=\"0;.2;1\" values=\"1.5;.5;1.5\"/><animate attributeName=\"y\" begin=\"svgSpinnersBlocksScale0.begin+0.45s\" dur=\"0.6s\" keyTimes=\"0;.2;1\" values=\"13.5;12.5;13.5\"/><animate attributeName=\"width\" begin=\"svgSpinnersBlocksScale0.begin+0.45s\" dur=\"0.6s\" keyTimes=\"0;.2;1\" values=\"9;11;9\"/><animate attributeName=\"height\" begin=\"svgSpinnersBlocksScale0.begin+0.45s\" dur=\"0.6s\" keyTimes=\"0;.2;1\" values=\"9;11;9\"/></rect></svg>\n </div>\n\n <LoadingWinBar></LoadingWinBar>\n <CheckYesNo></CheckYesNo>\n <CheckYes></CheckYes>\n\n <!-- <VeUser></VeUser> -->\n\n </div>\n</template>\n\n<script>\nimport get from 'lodash-es/get.js'\nimport cloneDeep from 'lodash-es/cloneDeep.js'\nimport isestr from 'wsemi/src/isestr.mjs'\nimport iseobj from 'wsemi/src/iseobj.mjs'\nimport isDev from 'wsemi/src/isDev.mjs'\nimport waitFun from 'wsemi/src/waitFun.mjs'\nimport LoadingWinBar from './components/Common/LoadingWinBar.vue'\nimport CheckYesNo from './components/Common/CheckYesNo.vue'\nimport CheckYes from './components/Common/CheckYes.vue'\n// import LayoutState from './components/LayoutState.vue'\nimport PageLogin from './components/PageLogin.vue'\nimport Layout from './components/Layout.vue'\n// import VeUser from './components/VeUser.vue'\n\n\nexport default {\n components: {\n LoadingWinBar,\n CheckYesNo,\n CheckYes,\n // LayoutState,\n PageLogin,\n Layout,\n // VeUser,\n },\n data: function() {\n return {\n\n autoLogining: true,\n\n }\n },\n beforeMount: function() {\n // console.log('beforeMount')\n\n let vo = this\n\n //setVo, 更換ui內vo, 才能使用廣播技術, 更換語系才能用廣播通知全部組件forceUpdate\n vo.$ui.setVo(vo)\n\n //setLang\n let lang = get(window, '___pmwsso___.language', '')\n vo.$ui.setLang(lang, 'app init') //初始化先讀取html內語系設定進行變更\n // console.log('lang', lang)\n\n },\n mounted: function() {\n // console.log('mounted')\n\n let vo = this\n\n //set, 把目前vo儲存至window供外部非vue環境使用\n window.$vo = vo\n\n //autoLogin\n if (vo.autoLogining) {\n\n //view\n let view = vo.$ui.getUrlView()\n // console.log('view', view)\n\n //autoLogin\n vo.$ui.autoLogin({ useRedir: view === 'login' })\n .then(() => {\n\n //提交變更viewState前往指定功能頁\n vo.$ui.updateViewState(view)\n vo.autoLogining = false\n console.log(`autoLogin, goto view[${view}] page`)\n\n })\n .catch((err) => {\n\n //錯誤發生時提交變更viewState返回登入頁\n vo.$ui.updateViewState('login')\n vo.autoLogining = false\n console.log(`autoLogin err[${err}], goto view['login'] page`)\n\n })\n }\n\n },\n computed: {\n\n syncState: function() {\n let vo = this\n return get(vo, '$store.state.syncState')\n },\n\n viewState: function() {\n let vo = this\n return get(vo, '$store.state.viewState', '')\n },\n\n webKey: function() {\n let vo = this\n return get(vo, '$store.state.webInfor.webKey', '')\n },\n\n },\n methods: {\n\n resize: function(msg) {\n // console.log('methods resize', msg)\n\n let vo = this\n\n //syncHeight\n vo.$ui.syncHeight()\n\n },\n\n },\n}\n</script>\n\n<style>\nhtml,\nbody {\n font-family: '微軟正黑體', 'Microsoft JhengHei', 'MicrosoftJhengHeiRegular', 'Avenir', Helvetica, Arial, sans-serif;\n overflow-y: hidden;\n}\n\ndiv,\np,\nspan,\na,\npre,\ninput,\ntextarea,\nbutton {\n font-family: inherit;\n}\n\n</style>\n","import mod from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js??clonedRuleSet-40.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=39543040\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=39543040&prod&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export const UpdateWebInfor = 'UpdateWebInfor'\r\nexport const UpdateLang = 'UpdateLang'\r\nexport const UpdateKpText = 'UpdateKpText'\r\n// export const UpdateConnState = 'UpdateConnState'\r\nexport const UpdateSyncState = 'UpdateSyncState'\r\nexport const UpdateLoading = 'UpdateLoading'\r\nexport const UpdateViewState = 'UpdateViewState'\r\nexport const UpdateTableData = 'UpdateTableData'\r\nexport const UpdateData = 'UpdateData'\r\nexport const UpdateHeightApp = 'UpdateHeightApp'\r\nexport const UpdateHeightAppEff = 'UpdateHeightAppEff'\r\nexport const UpdateHeightToolbar = 'UpdateHeightToolbar'\r\nexport const UpdateMenu = 'UpdateMenu'\r\nexport const UpdateUserToken = 'UpdateUserToken'\r\nexport const UpdateUserSelf = 'UpdateUserSelf'\r\n","import map from 'lodash-es/map.js'\r\nimport keys from 'lodash-es/keys.js'\r\nimport genIDSeq from 'wsemi/src/genIDSeq.mjs'\r\nimport dtmapping from 'wsemi/src/dtmapping.mjs'\r\nimport dtpick from 'wsemi/src/dtpick.mjs'\r\nimport nowms2str from 'wsemi/src/nowms2str.mjs'\r\nimport now2strp from 'wsemi/src/now2strp.mjs'\r\n\r\n\r\nlet keyTable = 'ips'\r\nlet tableNameCht = 'IP使用者'\r\nlet tableNameEng = 'IPs'\r\n\r\n\r\nlet settings = {\r\n id: {\r\n pk: true,\r\n name: '主鍵',\r\n type: 'STRING',\r\n },\r\n ip: {\r\n name: 'IP',\r\n type: 'STRING',\r\n },\r\n timeBlocked: {\r\n name: '封鎖時間',\r\n type: 'STRING',\r\n },\r\n}\r\n\r\nlet funNew = (ndata = {}) => {\r\n let o = dtmapping(ndata, keys(settings))\r\n o.id = `${genIDSeq()}`\r\n return o\r\n}\r\n\r\nlet funTest = () => {\r\n let rs = []\r\n return rs\r\n}\r\n\r\nlet tab = {\r\n keyTable,\r\n tableNameCht,\r\n tableNameEng,\r\n settings,\r\n funNew,\r\n funTest,\r\n}\r\n\r\n\r\nexport default tab\r\n\r\n","import map from 'lodash-es/map.js'\r\nimport keys from 'lodash-es/keys.js'\r\nimport genIDSeq from 'wsemi/src/genIDSeq.mjs'\r\nimport dtmapping from 'wsemi/src/dtmapping.mjs'\r\nimport dtpick from 'wsemi/src/dtpick.mjs'\r\nimport nowms2str from 'wsemi/src/nowms2str.mjs'\r\nimport now2strp from 'wsemi/src/now2strp.mjs'\r\nimport ot from 'dayjs'\r\n\r\n\r\nlet keyTable = 'tokens'\r\nlet tableNameCht = '金鑰'\r\nlet tableNameEng = 'Tokens'\r\n\r\n\r\nlet settings = {\r\n id: {\r\n pk: true,\r\n name: '主鍵',\r\n type: 'STRING',\r\n },\r\n token: {\r\n name: '金鑰',\r\n type: 'STRING',\r\n },\r\n userId: {\r\n name: '使用者主鍵',\r\n type: 'STRING',\r\n },\r\n isApp: {\r\n name: '是否為應用系統',\r\n type: 'STRING',\r\n },\r\n timeCreate: {\r\n name: '創建時間',\r\n type: 'STRING',\r\n },\r\n timeEnd: {\r\n name: '到期時間',\r\n type: 'STRING',\r\n },\r\n timeUpdate: {\r\n name: '更新時間',\r\n type: 'STRING',\r\n },\r\n}\r\n\r\nlet funNew = (ndata = {}) => {\r\n let o = dtmapping(ndata, keys(settings))\r\n o.id = `${genIDSeq()}`\r\n o.token = `${genIDSeq()}`\r\n o.timeCreate = nowms2str()\r\n o.timeEnd = ot().add(30, 'minute').format('YYYY-MM-DDTHH:mm:ss.SSSZ') //預設30min, 可由創建處再依照設定更新\r\n o.timeUpdate = o.timeCreate\r\n return o\r\n}\r\n\r\nlet funTest = () => {\r\n let rs = []\r\n return rs\r\n}\r\n\r\nlet tab = {\r\n keyTable,\r\n tableNameCht,\r\n tableNameEng,\r\n settings,\r\n funNew,\r\n funTest,\r\n}\r\n\r\n\r\nexport default tab\r\n\r\n","import map from 'lodash-es/map.js'\r\nimport keys from 'lodash-es/keys.js'\r\nimport genIDSeq from 'wsemi/src/genIDSeq.mjs'\r\nimport dtmapping from 'wsemi/src/dtmapping.mjs'\r\nimport dtpick from 'wsemi/src/dtpick.mjs'\r\nimport nowms2str from 'wsemi/src/nowms2str.mjs'\r\nimport now2strp from 'wsemi/src/now2strp.mjs'\r\n\r\n\r\nlet keyTable = 'users'\r\nlet tableNameCht = '使用者'\r\nlet tableNameEng = 'Users'\r\n\r\n\r\nlet settings = {\r\n id: {\r\n pk: true,\r\n name: '主鍵',\r\n type: 'STRING',\r\n },\r\n order: {\r\n name: '順序',\r\n type: 'INTEGER',\r\n },\r\n account: {\r\n name: '帳號',\r\n type: 'STRING',\r\n },\r\n password: {\r\n name: '密碼', //須儲存加鹽雜湊處理後密碼\r\n type: 'STRING',\r\n },\r\n name: {\r\n name: '姓名',\r\n type: 'STRING',\r\n },\r\n email: {\r\n name: '電子郵件',\r\n type: 'STRING',\r\n },\r\n description: {\r\n name: '描述',\r\n type: 'TEXT',\r\n },\r\n from: {\r\n name: '來源',\r\n type: 'STRING',\r\n },\r\n redir: {\r\n name: '登入後轉址',\r\n type: 'STRING',\r\n },\r\n isAdmin: {\r\n name: '是否為系統管理員',\r\n type: 'STRING',\r\n },\r\n timeVerified: {\r\n name: '驗證時間',\r\n type: 'STRING',\r\n },\r\n timeExpired: {\r\n name: '過期時間',\r\n type: 'STRING',\r\n },\r\n timeBlocked: {\r\n name: '封鎖時間',\r\n type: 'STRING',\r\n },\r\n userId: {\r\n name: '創建使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeCreate: {\r\n name: '創建時間',\r\n type: 'STRING',\r\n },\r\n userIdUpdate: {\r\n name: '最新變更使用者主鍵',\r\n type: 'STRING',\r\n },\r\n timeUpdate: {\r\n name: '更新時間',\r\n type: 'STRING',\r\n },\r\n isActive: {\r\n name: '是否有效',\r\n type: 'STRING',\r\n },\r\n}\r\n\r\nlet funNew = (ndata = {}) => {\r\n let o = dtmapping(ndata, keys(settings))\r\n o.id = `${genIDSeq()}`\r\n o.timeCreate = nowms2str()\r\n // o.userId = o.userId\r\n o.userIdUpdate = o.userId\r\n o.timeUpdate = o.timeCreate\r\n o.isActive = 'y'\r\n return o\r\n}\r\n\r\nlet funTest = () => {\r\n let rs = []\r\n return rs\r\n}\r\n\r\nlet tab = {\r\n keyTable,\r\n tableNameCht,\r\n tableNameEng,\r\n settings,\r\n funNew,\r\n funTest,\r\n}\r\n\r\n\r\nexport default tab\r\n\r\n","import ips from './tables/ips.mjs'\nimport tokens from './tables/tokens.mjs'\nimport users from './tables/users.mjs'\nimport build from 'w-data-collector/src/build.mjs'\n\n\nlet cs = {\n ips,\n tokens,\n users,\n}\n\n//ds\nlet ds = {}\nfor (let k in cs) {\n ds[k] = build(cs[k], { useCreateStorage: false })\n}\n\n\nexport default ds\n","import each from 'lodash-es/each.js'\r\nimport set from 'lodash-es/set.js'\r\nimport * as types from './types.mjs'\r\nimport ds from '../schema/index.mjs'\r\n\r\n\r\n//state, 全域狀態\r\nlet state = {\r\n\r\n hostname: `${window.location.origin}`,\r\n webInfor: {},\r\n connState: 'csIng', //'csIng', 'csLogin', 'csLogout', 'csErrConn', 'csErrLogin'\r\n syncState: false,\r\n viewState: 'login', //'login', 'backstage'\r\n loading: false,\r\n settings: {\r\n leftDrawerWidth: 200,\r\n },\r\n\r\n heightApp: 0,\r\n heightAppEff: 0,\r\n heightToolbar: 60,\r\n\r\n menu: {}, //初始值需為物件, 否則LayoutContent會取menu.key出錯\r\n\r\n userToken: '',\r\n userSelf: {},\r\n\r\n lang: 'cht', //'eng', 'cht'\r\n kpText: {}, //一定要放在vuex內, 否則無法用broadcast驅動變更語系文字\r\n\r\n}\r\n\r\n//添加各資料表\r\neach(ds, (v, k) => {\r\n state[k] = null //初始化null\r\n})\r\n\r\n//儲存至state\r\nexport { state }\r\n\r\n//mutations, 同步執行\r\nexport let mutations = {\r\n\r\n [types.UpdateWebInfor] (state, webInfor) {\r\n state.webInfor = webInfor\r\n },\r\n\r\n [types.UpdateLang] (state, lang) {\r\n state.lang = lang\r\n },\r\n\r\n [types.UpdateKpText] (state, kpText) {\r\n state.kpText = kpText\r\n },\r\n\r\n // [types.UpdateConnState] (state, connState) {\r\n // state.connState = connState\r\n // },\r\n\r\n [types.UpdateSyncState] (state, syncState) {\r\n state.syncState = syncState\r\n },\r\n\r\n [types.UpdateLoading] (state, loading) {\r\n state.loading = loading\r\n },\r\n\r\n [types.UpdateViewState] (state, viewState) {\r\n state.viewState = viewState\r\n },\r\n\r\n [types.UpdateTableData] (state, msg) {\r\n state[msg.tableName] = msg.data\r\n },\r\n\r\n [types.UpdateData] (state, msg) {\r\n //msg.path內為存取路徑, 需使用set處理\r\n // console.log('UpdateData msg', msg)\r\n set(state, msg.path, msg.data)\r\n },\r\n\r\n [types.UpdateHeightApp] (state, heightApp) {\r\n state.heightApp = heightApp\r\n },\r\n\r\n [types.UpdateHeightAppEff] (state, heightAppEff) {\r\n state.heightAppEff = heightAppEff\r\n },\r\n\r\n [types.UpdateHeightToolbar] (state, heightToolbar) {\r\n state.heightToolbar = heightToolbar\r\n },\r\n\r\n [types.UpdateMenu] (state, menu) {\r\n state.menu = menu\r\n },\r\n\r\n [types.UpdateUserToken] (state, userToken) {\r\n state.userToken = userToken\r\n },\r\n\r\n [types.UpdateUserSelf] (state, userSelf) {\r\n state.userSelf = userSelf\r\n },\r\n\r\n}\r\n\r\n","import Vue from 'vue'\r\nimport Vuex from 'vuex'\r\nimport { state, mutations } from './mutations.mjs'\r\nimport * as getters from './getters.mjs'\r\nimport * as actions from './actions.mjs'\r\nimport * as types from './types.mjs'\r\n\r\n\r\n//use\r\nVue.use(Vuex)\r\n\r\nlet st = new Vuex.Store({\r\n state,\r\n mutations,\r\n getters,\r\n actions,\r\n strict: true, //嚴格模式禁止修改state\r\n})\r\n\r\n//save to $store\r\nst.types = types\r\nVue.prototype.$store = st\r\n// console.log('$store', st)\r\n\r\nexport default st\r\n","\n\nlet kpLang = {\n\n csIng: {\n eng: 'Connecting...',\n cht: '連線中...',\n },\n csLogin: {\n eng: 'Logged in',\n cht: '已登入',\n },\n csLogout: {\n eng: 'Logged out',\n cht: '已登出',\n },\n csErrConn: {\n eng: 'Unable to connect',\n cht: '無法連線',\n },\n csErrLogin: {\n eng: 'Login denied',\n cht: '拒絕登入',\n },\n\n aggridLanguage: {\n eng: 'en',\n cht: 'zh-tw',\n },\n\n id: {\n eng: 'ID',\n cht: '主鍵',\n },\n systemMessage: {\n eng: 'System message',\n cht: '系統確認訊息',\n },\n ok: {\n eng: 'OK',\n cht: '確認',\n },\n no: {\n eng: 'No',\n cht: '取消',\n },\n yes: {\n eng: 'Yes',\n cht: '確定',\n },\n y: {\n eng: `Yes`,\n cht: `是`,\n },\n n: {\n eng: `No`,\n cht: `否`,\n },\n empty: {\n eng: 'Empty',\n cht: '無',\n },\n to: {\n eng: 'To',\n cht: '至',\n },\n at: {\n eng: 'At',\n cht: '於',\n },\n unknow: {\n eng: `Unknow`,\n cht: `未知`,\n },\n waitingData: {\n eng: 'Waiting data...',\n cht: '等待數據中...',\n },\n\n isEditabled: {\n eng: 'Editable',\n cht: '是否編輯',\n },\n saveChanges: {\n eng: `Save changes`,\n cht: `儲存變更`,\n },\n from: {\n eng: `From`,\n cht: `來源`,\n },\n save: {\n eng: `Save`,\n cht: `儲存`,\n },\n close: {\n eng: `Close`,\n cht: `關閉`,\n },\n cancel: {\n eng: `Cancel`,\n cht: `取消`,\n },\n processing: {\n eng: `Processing...`,\n cht: `處理中請稍後...`,\n },\n anUnexpectedErrorOccurred: {\n eng: `An unexpected error occurred, please contact the administrator`,\n cht: `發生非預期錯誤,請洽管理員`,\n },\n getDataError: {\n eng: `Failed to get data, please try again later`,\n cht: `取得數據失敗,請稍後再試`,\n },\n\n userIdCreate: {\n eng: `ID of the created user`,\n cht: '創建使用者主鍵',\n },\n timeCreate: {\n eng: `Created time`,\n cht: '創建時間',\n },\n userIdUpdate: {\n eng: `ID of the updated user`,\n cht: '最新變更使用者主鍵',\n },\n timeUpdate: {\n eng: `Updated time`,\n cht: '最新變更時間',\n },\n // timeVerified: {\n // eng: `Verified time`,\n // cht: `驗證時間`,\n // },\n // timeExpired: {\n // eng: `Expired time`,\n // cht: `帳號過期時間`,\n // },\n // timeBlocked: {\n // eng: `Blocked time`,\n // cht: `封鎖時間`,\n // },\n // timeEnd: {\n // eng: 'End time',\n // cht: '到期時間',\n // },\n\n userId: {\n eng: `ID of the user`,\n cht: '使用者主鍵',\n },\n account: {\n eng: `Account`,\n cht: `帳號`,\n },\n password: {\n eng: `Password`,\n cht: `密碼`,\n },\n toggleToShowPassword: {\n eng: `To show password`,\n cht: `變更為顯示密碼模式`,\n },\n toggleToHidePassword: {\n eng: `To hide password`,\n cht: `變更為隱藏密碼模式`,\n },\n username: {\n eng: `Username`,\n cht: `使用者姓名`,\n },\n email: {\n eng: `Email`,\n cht: `電子郵件`,\n },\n name: {\n eng: `Name`,\n cht: `名稱`,\n },\n description: {\n eng: `Description`,\n cht: `說明`,\n },\n noDescription: {\n eng: `No description`,\n cht: `無說明`,\n },\n redir: {\n eng: `Redirect`,\n cht: `登入後轉至網址`,\n },\n\n login: {\n eng: `Log in`,\n cht: `登入`,\n },\n logout: {\n eng: `Log out`,\n cht: `登出`,\n },\n\n menuTreeShow: {\n eng: `Show menu`,\n cht: `顯示選單`,\n },\n menuTreeHide: {\n eng: `Hide menu`,\n cht: `隱藏選單`,\n },\n\n mmStaInfor: {\n eng: `Statistics information`,\n cht: `統計資訊`,\n },\n mmStaInforMsg: {\n eng: `Provides important statistical information such as the current system user login frequency, key usage frequency, IP connection frequency, etc.`,\n cht: `提供目前系統使用者登入頻率、金鑰使用頻率、IP連線頻率等重要統計資訊。`,\n },\n\n mmUserInfor: {\n eng: `User information`,\n cht: `使用者資訊`,\n },\n\n mmUsersList: {\n eng: `Users list`,\n cht: `使用者清單`,\n },\n mmUsersListMsg: {\n eng: `Provide a list of users, which can be added, edited, deleted, etc.`,\n cht: `提供目前使用者資料清單,可進行新增、編輯、刪除等作業。`,\n },\n\n mmTokensList: {\n eng: `Tokens list`,\n cht: `金鑰清單`,\n },\n mmTokensListMsg: {\n eng: `Provide a list of tokens, which can be deleted, etc.`,\n cht: `提供目前金鑰資料清單,可進行強制登出等作業。`,\n },\n\n mmIpsList: {\n eng: `Ips list`,\n cht: `IP清單`,\n },\n mmIpsListMsg: {\n eng: `Provide a list of tokens, which can be deleted, etc.`,\n cht: `提供目前存取IP清單,可進行封鎖等作業。`,\n },\n\n nowTokensList: {\n eng: `Tokens list`,\n cht: `金鑰清單`,\n },\n nowBlockList: {\n eng: `Block list`,\n cht: `封鎖清單`,\n },\n systemTokenList: {\n eng: `System token list`,\n cht: `系統金鑰清單`,\n },\n\n failedLoginForNoWebKey: {\n eng: `Can not get the web key`,\n cht: `無有效站台唯一識別資訊`,\n },\n failedLoginForNoToken: {\n eng: `Can not get the token`,\n cht: `無有效金鑰`,\n },\n failedLoginForNoRedir: {\n eng: `Can not get the url for redirection`,\n cht: `無有效轉址`,\n },\n failedLoginForCatch: {\n eng: `User account or password is incorrect`,\n cht: `使用者帳密錯誤無法登入`,\n },\n\n failedLogoutForNoWebKey: {\n eng: `Can not get the web key`,\n cht: `無有效站台唯一識別資訊`,\n },\n failedLogoutForCatch: {\n eng: `Can not logout`,\n cht: `使用者登出失敗`,\n },\n\n userStatus: {\n eng: `Status`,\n cht: `帳號狀態`,\n },\n\n isVerified: {\n eng: `Verified`,\n cht: `帳號是否驗證`,\n },\n isVerifiedY: {\n eng: `Verified`,\n cht: `帳號已驗證`,\n },\n isVerifiedN: {\n eng: `Not verified`,\n cht: `帳號未驗證`,\n },\n userTimeVerified: {\n eng: `Verified time`,\n cht: `帳號驗證狀態與時間`,\n },\n isVerifiedWaiting: {\n eng: `Waiting for verification`,\n cht: `等待驗證中`,\n },\n\n isExpired: {\n eng: `Expired`,\n cht: `帳號是否過期`,\n },\n isExpiredY: {\n eng: `Expired`,\n cht: `帳號已過期`,\n },\n isExpiredN: {\n eng: `Not expired`,\n cht: `帳號未過期`,\n },\n userTimeExpired: {\n eng: `Expired time`,\n cht: `帳號過期狀態與時間`,\n },\n isExpiredDeny: {\n eng: `Account login prohibited`,\n cht: `禁止帳號登入`,\n },\n isExpiredNever: {\n eng: `Never expires`,\n cht: `永不過期`,\n },\n\n isBlocked: {\n eng: `Blocked`,\n cht: `帳號是否被封鎖`,\n },\n isBlockedY: {\n eng: `Blocked`,\n cht: `帳號已封鎖`,\n },\n isBlockedN: {\n eng: `Not blocked`,\n cht: `帳號未封鎖`,\n },\n userTimeBlocked: {\n eng: `Blocked time`,\n cht: `帳號封鎖狀態與時間`,\n },\n isBlockedNormalStatus: {\n eng: `Normal status`,\n cht: `狀態正常`,\n },\n\n isAdmin: {\n eng: `Administrator`,\n cht: `是否為系統管理者`,\n },\n isAdminY: {\n eng: `System Administrator`,\n cht: `系統管理者`,\n },\n isAdminN: {\n eng: `Non-System Administrator`,\n cht: `非系統管理者`,\n },\n userRole: {\n eng: `Role`,\n cht: `角色`,\n },\n userRoleAdmin: {\n eng: `Administrator`,\n cht: `系統管理者`,\n },\n userRoleGeneral: {\n eng: `General`,\n cht: `一般使用者`,\n },\n\n isActive: {\n eng: 'Active',\n cht: '帳號是否有效',\n },\n isActiveY: {\n eng: 'Active',\n cht: '帳號有效',\n },\n isActiveMsgY: {\n eng: 'Enabling',\n cht: '啟用中',\n },\n isActiveN: {\n eng: 'Inactive',\n cht: '帳號無效',\n },\n isActiveMsgN: {\n eng: 'Deactivated',\n cht: '已停用',\n },\n\n errInNames: {\n eng: `Name errors`,\n cht: `名稱出現錯誤待修復`,\n },\n errInAccounts: {\n eng: `Account errors`,\n cht: `帳號出現錯誤待修復`,\n },\n errInEmails: {\n eng: `Email errors`,\n cht: `Email出現錯誤待修復`,\n },\n errItemsByRedir: {\n eng: `Redirect errors`,\n cht: `登入後轉址出現錯誤待修復`,\n },\n\n modeEdit: {\n eng: `Edit mode`,\n cht: `編輯模式`,\n },\n showTabCols: {\n eng: `Show columns`,\n cht: `顯示欄位`,\n },\n\n userList: {\n eng: `User list`,\n cht: `使用者清單`,\n },\n userName: {\n eng: `Name of user`,\n cht: `使用者名稱`,\n },\n userNameEmpty: {\n eng: `Invalid name of user`,\n cht: `尚未給予有效使用者名稱`,\n },\n userNameDuplicate: {\n eng: `Duplicate name of user`,\n cht: `使用者名稱出現重複`,\n },\n userAccountEmpty: {\n eng: `Invalid account of user`,\n cht: `尚未給予有效使用者帳號`,\n },\n userAccountDuplicate: {\n eng: `Duplicate account of user`,\n cht: `使用者帳號出現重複`,\n },\n userEmailEmpty: {\n eng: `Empty email of user`,\n cht: `尚未給予使用者Email`,\n },\n userEmailError: {\n eng: `Invalid email of user`,\n cht: `使用者Email格式錯誤`,\n },\n userEmailDuplicate: {\n eng: `Duplicate email of user`,\n cht: `使用者Email出現重複`,\n },\n userRedirEmpty: {\n eng: `Invalid redirect of user`,\n cht: `尚未給予有效登入後轉址`,\n },\n userTimeEmpty: {\n eng: `Invalid time`,\n cht: `無`,\n },\n userAddEmpty: {\n eng: `No user`,\n cht: `尚未新增使用者資料`,\n },\n userAdd: {\n eng: `Add user`,\n cht: `新增使用者`,\n },\n userAddNameNew: {\n eng: `New user`,\n cht: `新使用者`,\n },\n userAddIdNew: {\n eng: `Waiting generation`,\n cht: `待自動給予`,\n },\n userCopy: {\n eng: `Copy user`,\n cht: `複製使用者`,\n },\n userCopyNameNew: {\n eng: `copy`,\n cht: `複製`,\n },\n userDeleteCheckUsers: {\n eng: `Delete user(s)`,\n cht: `刪除勾選使用者`,\n },\n userResetPassword: {\n eng: `Reset password`,\n cht: `重設密碼`,\n },\n userSaveUsersEmpty: {\n eng: `No user`,\n cht: `未有變更使用者資料`,\n },\n userSaveUsersFail: {\n eng: `Failed to save users`,\n cht: `儲存使用者數據失敗`,\n },\n userSaveUsersSuccess: {\n eng: `Save users successfully`,\n cht: `儲存使用者數據成功`,\n },\n userEditNoUserId: {\n eng: `Can not find the id of user`,\n cht: `無法找到使用者Id`,\n },\n userEditNoUserData: {\n eng: `Can not find the data of user`,\n cht: `無法找到使用者數據`,\n },\n\n token: {\n eng: 'Token',\n cht: '金鑰',\n },\n isApp: {\n eng: 'For app',\n cht: '是否為應用系統金鑰',\n },\n tokenTimeCreate: {\n eng: `Created time`,\n cht: '金鑰創建時間',\n },\n tokenTimeEnd: {\n eng: 'End time',\n cht: '金鑰到期時間',\n },\n tokenTimeUpdate: {\n eng: 'End time',\n cht: '金鑰更新時間',\n },\n tokenDeleteCheckTokens: {\n eng: `Delete token(s)`,\n cht: `刪除勾選金鑰`,\n },\n tokenTimeEmpty: {\n eng: `Invalid time`,\n cht: `無`,\n },\n tokenEditNoTokenId: {\n eng: `Can not find the id of token`,\n cht: `無法找到金鑰Id`,\n },\n tokenEditNoTokenData: {\n eng: `Can not find the data of token`,\n cht: `無法找到金鑰數據`,\n },\n // tokenAddEmpty: {\n // eng: `No token`,\n // cht: `尚未新增金鑰資料`,\n // },\n tokenSaveTokensFail: {\n eng: `Failed to save tokens`,\n cht: `儲存金鑰數據失敗`,\n },\n tokenSaveTokensSuccess: {\n eng: `Save tokens successfully`,\n cht: `儲存金鑰數據成功`,\n },\n\n ip: {\n eng: 'IP',\n cht: 'IP',\n },\n ipTimeBlocked: {\n eng: `Blocked time`,\n cht: `IP封鎖時間`,\n },\n ipDeleteCheckIps: {\n eng: `Delete checked IP(s)`,\n cht: `刪除勾選IP`,\n },\n ipTimeEmpty: {\n eng: `Invalid time`,\n cht: `無`,\n },\n ipEditNoIpId: {\n eng: `Can not find the id of IP`,\n cht: `無法找到IP Id`,\n },\n ipEditNoIpData: {\n eng: `Can not find the data of IP`,\n cht: `無法找到IP數據`,\n },\n // apAddEmpty: {\n // eng: `No ip`,\n // cht: `尚未新增IP資料`,\n // },\n ipSaveIpsFail: {\n eng: `Failed to save IPs`,\n cht: `儲存IP數據失敗`,\n },\n ipSaveIpsSuccess: {\n eng: `Save IPs successfully`,\n cht: `儲存IP數據成功`,\n },\n\n statisticsInformation: {\n eng: 'Statistics Information',\n cht: '統計資訊',\n },\n statisticsInformationDescription: {\n eng: 'Provides an overview of system usage and security metrics.',\n cht: '提供系統使用情況和安全指標的總覽。',\n },\n userGroupInfor: {\n eng: 'User Information',\n cht: '使用者資訊區',\n },\n totalUsers: {\n eng: 'Total Users',\n cht: '總使用者',\n },\n activeUsers: {\n eng: 'Active Users',\n cht: '活躍使用者',\n },\n blockedUsers: {\n eng: 'Blocked Users',\n cht: '已封鎖使用者',\n },\n expiredUsers: {\n eng: 'Expired Users',\n cht: '已過期使用者',\n },\n accessActivityMonitoring: {\n eng: 'Access Activity Monitoring',\n cht: '存取活動監測',\n },\n userLoginFrequency: {\n eng: 'User Login Frequency',\n cht: '使用者登入頻率',\n },\n last7Days: {\n eng: 'Last 7 days',\n cht: '最近7天',\n },\n tokenUsageFrequency: {\n eng: 'Token Usage Frequency',\n cht: '金鑰使用頻率',\n },\n ipConnectionFrequency: {\n eng: 'IP Connection Frequency',\n cht: 'IP 連線頻率',\n },\n controlStatus: {\n eng: 'Control Status',\n cht: '管控狀態',\n },\n tokenCharacteristic: {\n eng: 'Token Characteristic',\n cht: '金鑰狀態',\n },\n activeTokens: {\n eng: 'Active Tokens',\n cht: '有效金鑰數量',\n },\n createdLast24h: {\n eng: 'Created in last 24h',\n cht: '最近24小時內創建',\n },\n endingNext24h: {\n eng: 'Ending in next 24h',\n cht: '未來24小時內到期',\n },\n endedTokens: {\n eng: 'Ended Tokens',\n cht: '已到期金鑰數量',\n },\n ipCharacteristic: {\n eng: 'IP Characteristic',\n cht: 'IP狀態',\n },\n conn24h: {\n eng: 'Connections in last 24h',\n cht: '最近24小時內連線數量',\n },\n blockedIps: {\n eng: 'Blocked IPs',\n cht: '當前已封鎖IP數量',\n },\n selectItem1hr: {\n eng: '1 hour',\n cht: '1小時',\n },\n selectItem4hr: {\n eng: '4 hour',\n cht: '4小時',\n },\n selectItem8hr: {\n eng: '8 hour',\n cht: '8小時',\n },\n selectItem1day: {\n eng: '1 day',\n cht: '1日',\n },\n countAttempt: {\n eng: 'Attempt',\n cht: '嘗試登入',\n },\n countSuccess: {\n eng: 'Success',\n cht: '登入成功',\n },\n countError: {\n eng: 'Error',\n cht: '登入失敗',\n },\n count: {\n eng: 'Count',\n cht: '總次數',\n },\n\n showIndividually: {\n eng: 'Show individually',\n cht: '個別顯示',\n },\n numberOrder: {\n eng: 'No.',\n cht: '排序',\n },\n total: {\n eng: 'Total',\n cht: '總計',\n },\n last1Day: {\n eng: 'Last 1 day',\n cht: '最近1天',\n },\n last8Hour: {\n eng: 'Last 8 hour',\n cht: '最近8小時',\n },\n last4Hour: {\n eng: 'Last 4 hour',\n cht: '最近4小時',\n },\n last1Hour: {\n eng: 'Last 1 hour',\n cht: '最近1小時',\n },\n showMax5: {\n eng: 'Show max 5 rows',\n cht: '顯示前5筆',\n },\n showAll: {\n eng: 'Show all',\n cht: '顯示全部',\n },\n\n //bbb 以下尚未使用\n\n dayCreate: {\n eng: 'Create day',\n cht: '創建日期',\n },\n newUser: {\n eng: `New user`,\n cht: `新使用者`,\n },\n failedToAddUser: {\n eng: `Failed to add the user`,\n cht: `新增使用者失敗`,\n },\n successfulToAddUser: {\n eng: `Add the user successfully`,\n cht: `新增使用者成功`,\n },\n confirmToDeleteUser: {\n eng: `Do you want to delete the user[{name}]?`,\n cht: `確認是否刪除使用者`,\n },\n failedToDeleteUser: {\n eng: `Failed to delete the user`,\n cht: `刪除使用者失敗`,\n },\n successfulToDeleteUser: {\n eng: `Delete the user successfully`,\n cht: `刪除使用者成功`,\n },\n cannotShowUserDetailsInViewMode: {\n eng: `Can not show the user details in the view mode`,\n cht: `非編輯模式無法查閱使用者詳細資訊`,\n },\n\n allDefaults: {\n eng: `All defaults`,\n cht: `全部項目預設值`,\n },\n show: {\n eng: `Show`,\n cht: `顯示`,\n },\n active: {\n eng: `Active`,\n cht: `啟用`,\n },\n showChildren: {\n eng: `Show children`,\n cht: `所屬顯示`,\n },\n hideChildren: {\n eng: `Hide children`,\n cht: `所屬不顯示`,\n },\n activateChildren: {\n eng: `Activate children`,\n cht: `所屬啟用`,\n },\n deactivateChildren: {\n eng: `Deactivate children`,\n cht: `所屬不啟用`,\n },\n isUsernameEmpty: {\n eng: `Username is empty`,\n cht: `使用者名稱不得為空`,\n },\n failedToSaveUser: {\n eng: `Failed to save the user`,\n cht: `變更使用者失敗`,\n },\n successfulToSaveUser: {\n eng: `Save the user successfully`,\n cht: `變更使用者成功`,\n },\n\n}\n\n\nexport default kpLang\n","import Vue from 'vue'\r\nimport min from 'lodash-es/min.js'\r\nimport size from 'lodash-es/size.js'\r\nimport take from 'lodash-es/take.js'\r\nimport isEqual from 'lodash-es/isEqual.js'\r\nimport uniq from 'lodash-es/uniq.js'\r\nimport set from 'lodash-es/set.js'\r\nimport get from 'lodash-es/get.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport filter from 'lodash-es/filter.js'\r\nimport last from 'lodash-es/last.js'\r\nimport split from 'lodash-es/split.js'\r\nimport join from 'lodash-es/join.js'\r\nimport drop from 'lodash-es/drop.js'\r\nimport dropRight from 'lodash-es/dropRight.js'\r\nimport groupBy from 'lodash-es/groupBy.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport cint from 'wsemi/src/cint.mjs'\r\nimport delay from 'wsemi/src/delay.mjs'\r\nimport isarr from 'wsemi/src/isarr.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport isfun from 'wsemi/src/isfun.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isearr from 'wsemi/src/isearr.mjs'\r\nimport isEle from 'wsemi/src/isEle.mjs'\r\nimport strleft from 'wsemi/src/strleft.mjs'\r\nimport strdelleft from 'wsemi/src/strdelleft.mjs'\r\nimport sep from 'wsemi/src/sep.mjs'\r\nimport aes2str from 'wsemi/src/aes2str.mjs'\r\nimport str2aes from 'wsemi/src/str2aes.mjs'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport genPm from 'wsemi/src/genPm.mjs'\r\nimport pmSeries from 'wsemi/src/pmSeries.mjs'\r\nimport waitFun from 'wsemi/src/waitFun.mjs'\r\nimport browserView from 'wsemi/src/browserView.mjs'\r\nimport arrHas from 'wsemi/src/arrHas.mjs'\r\nimport arrSort from 'wsemi/src/arrSort.mjs'\r\nimport arrInsert from 'wsemi/src/arrInsert.mjs'\r\nimport replace from 'wsemi/src/replace.mjs'\r\nimport timemsTZ2past from 'wsemi/src/timemsTZ2past.mjs'\r\nimport convertToTree from 'wsemi/src/convertToTree.mjs'\r\n// import WUiDwload from 'w-ui-dwload/src/WUiDwload.mjs'\r\nimport kpLang from './mLang.mjs'\r\n\r\n\r\nlet vo = Vue.prototype\r\n\r\n\r\nfunction setVo(vObj) {\r\n vo = vObj\r\n}\r\n\r\n\r\n// function updateConnState(connState) {\r\n// vo.$store.commit(vo.$store.types.UpdateConnState, connState)\r\n// }\r\n\r\n\r\nfunction updateLoading(loading) {\r\n vo.$store.commit(vo.$store.types.UpdateLoading, loading)\r\n}\r\n\r\n\r\nfunction updateViewState(viewState) {\r\n vo.$store.commit(vo.$store.types.UpdateViewState, viewState)\r\n}\r\n\r\n\r\nfunction updateUserToken(userToken) {\r\n vo.$store.commit(vo.$store.types.UpdateUserToken, userToken)\r\n}\r\n\r\n\r\nfunction updateUserSelf(userSelf) {\r\n vo.$store.commit(vo.$store.types.UpdateUserSelf, userSelf)\r\n}\r\n\r\n\r\nfunction forceUpdate() {\r\n // console.log('call forceUpdate')\r\n\r\n function broadcast(chs) {\r\n each(chs, (v) => {\r\n // console.log(v.$el)\r\n v.$forceUpdate()\r\n if (v.$children) {\r\n broadcast(v.$children)\r\n }\r\n })\r\n }\r\n\r\n //broadcast, 注意此處需使用更換ui內vo為mounted後的vo, 也就是含元素, 才能使用廣播技術\r\n broadcast(vo.$children)\r\n\r\n}\r\n\r\n\r\nfunction validLang(lang) {\r\n if (lang !== 'eng' && lang !== 'cht') {\r\n // console.log(`invalid lang[${lang}]`)\r\n lang = 'eng'\r\n }\r\n return lang\r\n}\r\n\r\n\r\nfunction getLang() {\r\n let lang = ''\r\n\r\n //from window\r\n if (!isestr(lang)) {\r\n let _lang = get(window, '___pmwsso___.language', '')\r\n // console.log('_lang(from window)', _lang)\r\n if (isestr(_lang)) {\r\n lang = validLang(_lang) //有可能取到未取代前模板符號\r\n }\r\n }\r\n\r\n //from store\r\n if (!isestr(lang)) {\r\n let _lang = get(vo, '$store.state.lang', '')\r\n // console.log('_lang(from store)', _lang)\r\n if (isestr(_lang)) {\r\n lang = validLang(_lang) //有可能給予非預期lang\r\n }\r\n }\r\n\r\n //return\r\n if (!isestr(lang)) {\r\n return 'eng'\r\n }\r\n return lang\r\n}\r\n\r\n\r\nfunction setLang(lang = null, from = '') {\r\n // console.log('setLang', lang, from)\r\n\r\n //check\r\n if (!isestr(lang)) {\r\n lang = getLang()\r\n }\r\n else {\r\n lang = validLang(lang)\r\n }\r\n // console.log('get lang', lang)\r\n\r\n //check, 若有變更才commit\r\n if (true) {\r\n let _lang = get(vo, '$store.state.lang', '')\r\n if (lang !== _lang) {\r\n vo.$store.commit(vo.$store.types.UpdateLang, lang)\r\n // console.log('commit lang', lang)\r\n }\r\n }\r\n\r\n //genKpText, 切換lang得調用getKpLang重算kpText\r\n genKpText(lang)\r\n\r\n //forceUpdate\r\n forceUpdate()\r\n\r\n}\r\n\r\n\r\nfunction genKpText(lang) {\r\n // console.log('genKpText', lang)\r\n\r\n //kp\r\n let kp = {}\r\n\r\n //kpLang\r\n kp = {\r\n ...kp,\r\n ...kpLang,\r\n }\r\n\r\n //kpLangExt\r\n let kpLangExt = get(vo, '$store.state.webInfor.kpLangExt', {})\r\n // console.log('kpLangExt', kpLangExt)\r\n if (iseobj(kpLangExt)) {\r\n kp = {\r\n ...kp,\r\n ...kpLangExt,\r\n }\r\n }\r\n\r\n //webName\r\n let webName = get(vo, '$store.state.webInfor.webName', {})\r\n // console.log('webName', webName)\r\n if (iseobj(webName)) {\r\n kp = {\r\n ...kp,\r\n webName: {\r\n ...webName,\r\n },\r\n }\r\n }\r\n\r\n //webDescription\r\n let webDescription = get(vo, '$store.state.webInfor.webDescription', {})\r\n // console.log('webDescription', webDescription)\r\n if (iseobj(webDescription)) {\r\n kp = {\r\n ...kp,\r\n webDescription: {\r\n ...webDescription,\r\n },\r\n }\r\n }\r\n\r\n //kpText\r\n let kpText = {}\r\n each(kp, (v, k) => {\r\n kpText[k] = v[lang]\r\n })\r\n // console.log('kp', kp)\r\n // console.log('kpText', kpText)\r\n\r\n //commit\r\n vo.$store.commit(vo.$store.types.UpdateKpText, kpText)\r\n // console.log('commit kpText', kpText)\r\n\r\n}\r\n\r\n\r\nfunction getKpText(key) {\r\n // console.log('getKpText', key)\r\n\r\n //kpText\r\n let kpText = get(vo, '$store.state.kpText')\r\n // console.log('kpText', cloneDeep(kpText))\r\n\r\n //t\r\n let t = get(kpText, key, '')\r\n if (!isestr(t)) {\r\n t = key\r\n }\r\n\r\n return t\r\n}\r\n\r\n\r\nfunction gv(o, k, cv = null) {\r\n let r = get(o, k, '')\r\n if (!isestr(r)) {\r\n let def = getKpText('empty')\r\n return def\r\n }\r\n if (isfun(cv)) {\r\n r = cv(r)\r\n }\r\n return r\r\n}\r\n\r\n\r\nfunction syncHeight() {\r\n\r\n //heightToolbar\r\n let heightToolbar = get(vo, '$store.state.heightToolbar')\r\n\r\n //heightAppEff\r\n let heightAppEff = window.innerHeight - heightToolbar\r\n\r\n //commit\r\n // vo.$store.commit(vo.$store.types.UpdateHeightToolbar, heightToolbar)\r\n vo.$store.commit(vo.$store.types.UpdateHeightApp, window.innerHeight)\r\n vo.$store.commit(vo.$store.types.UpdateHeightAppEff, heightAppEff)\r\n\r\n return ''\r\n}\r\n\r\n\r\n// async function waitData(t = 0) {\r\n\r\n// //delay\r\n// if (t > 0) {\r\n// await delay(t)\r\n// }\r\n\r\n// // //waitFun, 等待dsrl模組掛載\r\n// // await waitFun(() => {\r\n// // return iseobj(get(vo, '$dsrl'))\r\n// // })\r\n\r\n// //等待前端第一次同步完畢數據\r\n// await waitFun(() => {\r\n// return get(vo, '$store.state.syncState')\r\n// })\r\n\r\n// }\r\n\r\n\r\nfunction parseUrlParams() {\r\n\r\n //kp\r\n let kp = {}\r\n try {\r\n\r\n //ulps\r\n let ulps = new URLSearchParams(window.location.search)\r\n // console.log('ulps', ulps, window.location.search, window.location.href)\r\n\r\n //forEach\r\n ulps.forEach((v, k) => {\r\n // console.log(k, v)\r\n kp[k] = v\r\n })\r\n\r\n }\r\n catch (err) {\r\n console.log('err', err)\r\n }\r\n // console.log('kp', kp)\r\n\r\n return kp\r\n}\r\n\r\n\r\nfunction getUrlView() {\r\n\r\n //parseUrlParams\r\n let kp = parseUrlParams()\r\n // console.log('kp', kp)\r\n //http://localhost:8080/?view=backstage => {view: 'backstage'}\r\n\r\n //view\r\n let view = get(kp, 'view', '')\r\n if (view === '') {\r\n view = 'login'\r\n }\r\n if (view !== 'login' && view !== 'backstage') {\r\n console.log(`invalid view[${view}]`)\r\n view = 'login'\r\n }\r\n // console.log('view', view)\r\n\r\n return view\r\n}\r\n\r\n\r\nfunction goUrl(url, token) {\r\n\r\n //replace\r\n url = url.replaceAll('{token}', token)\r\n\r\n //href\r\n // if (isDev()) {\r\n // console.log('10s後重導至:', url)\r\n // setTimeout(() => {\r\n // window.location.href = url\r\n // }, 10 * 1000)\r\n // }\r\n // else {\r\n // window.location.href = url\r\n // }\r\n window.location.href = url\r\n\r\n}\r\n\r\n\r\nfunction login(account, password, opt = {}) {\r\n\r\n //login測試\r\n //http://localhost:8080/ => 登入後轉至指定頁\r\n //http://localhost:8080/?token=sys => 網址給予token但不使用, 登入後轉至指定頁\r\n //http://localhost:8080/?view=backstage => 登入後轉至後台\r\n //http://localhost:8080/?view=backstage&token=sys => 網址給予token但不使用, 登入後轉至後台\r\n\r\n //useRedir\r\n let useRedir = get(opt, 'useRedir', false)\r\n // console.log('useRedir', useRedir)\r\n\r\n //pm\r\n let pm = genPm()\r\n\r\n async function core() {\r\n\r\n //show loading\r\n updateLoading(true)\r\n\r\n //delay\r\n await delay(1000)\r\n\r\n //$keyLS\r\n let $keyLS = get(vo, '$store.state.webInfor.webKey', '')\r\n\r\n //check\r\n if (!isestr($keyLS)) {\r\n\r\n //alert\r\n vo.$alert(vo.$t('failedLoginForNoWebKey'), { type: 'error' })\r\n\r\n //reject\r\n pm.reject('invalid $keyLS')\r\n\r\n return\r\n }\r\n\r\n //loginByAccountAndPassword\r\n let u = await vo.$fapi.loginByAccountAndPassword(account, password)\r\n // console.log('u', u)\r\n\r\n //key\r\n let key = `${$keyLS}:userToken`\r\n // console.log('key', key)\r\n\r\n //setItem, 須先清空token\r\n await localStorage.setItem(key, '')\r\n\r\n //check\r\n if (!iseobj(u)) {\r\n // console.log('invalid user')\r\n\r\n //reject\r\n pm.reject('invalid user')\r\n\r\n return\r\n }\r\n\r\n //token\r\n let token = get(u, 'token', '')\r\n // console.log('token', token)\r\n\r\n //check\r\n if (!isestr(token)) {\r\n\r\n //alert\r\n vo.$alert(vo.$t('failedLoginForNoToken'), { type: 'error' })\r\n\r\n //reject\r\n pm.reject('invalid token')\r\n\r\n return\r\n }\r\n\r\n //setItem\r\n await localStorage.setItem(key, token)\r\n\r\n //update token and user\r\n updateUserToken(token)\r\n updateUserSelf(u)\r\n\r\n //useRedir\r\n if (useRedir) {\r\n\r\n //redir\r\n let redir = get(u, 'redir', '')\r\n // console.log('redir', redir)\r\n\r\n //check\r\n if (!isestr(redir)) {\r\n\r\n //alert\r\n vo.$alert(vo.$t('failedLoginForNoRedir'), { type: 'error' })\r\n\r\n //reject\r\n pm.reject('invalid redir')\r\n\r\n return\r\n }\r\n\r\n //goUrl\r\n goUrl(redir, token)\r\n // console.log('goUrl', redir, 'token', token)\r\n\r\n //resolve\r\n pm.resolve('redir')\r\n\r\n // //hide loading, 登入成功不能先隱藏loading, 開始轉址到轉跳會有一段時間, 持續顯示loading不隱藏, 避免使用者誤會登入失敗\r\n // updateLoading(false)\r\n\r\n return\r\n }\r\n\r\n //hide loading, 登入成功後且非轉址時隱藏loading\r\n updateLoading(false)\r\n\r\n //resolve\r\n pm.resolve('done')\r\n\r\n }\r\n\r\n //core\r\n core()\r\n .catch((err) => {\r\n // console.log('login', err)\r\n\r\n //alert\r\n vo.$alert(vo.$t('failedLoginForCatch'), { type: 'error' })\r\n\r\n //reject\r\n pm.reject(err)\r\n\r\n //hide loading, 登入失敗後隱藏loading\r\n updateLoading(false)\r\n\r\n })\r\n\r\n return pm\r\n}\r\n\r\n\r\nfunction autoLogin(opt = {}) {\r\n\r\n //autoLogin測試\r\n //http://localhost:8080/ => 無token須轉至登入頁\r\n //http://localhost:8080/?token=sys => 雖網址有token但cache無token, 須轉至登入頁\r\n //http://localhost:8080/?view=backstage => 無token須轉至登入頁\r\n //http://localhost:8080/?view=backstage&token=sys => 雖網址有token但cache無token, 須轉至登入頁\r\n //http://localhost:8080/, with cache token => 有cache內token可至指定頁\r\n //http://localhost:8080/?view=backstage, with cache token => 有cache內token可至後台\r\n //http://localhost:8080/?view=backstage&token=sys, with cache token => 雖網址有token但須以cache內token為主, 有cache內token可至後台\r\n\r\n //useRedir\r\n let useRedir = get(opt, 'useRedir', false)\r\n // console.log('useRedir', useRedir)\r\n\r\n //pm\r\n let pm = genPm()\r\n\r\n async function core() {\r\n let errTemp = null\r\n\r\n //waitFun, 因須使用webKey故須等待syncState\r\n // console.log('wait syncState...')\r\n await waitFun(() => {\r\n return get(vo, '$store.state.syncState', false)\r\n })\r\n // console.log('wait syncState done', vo.syncState)\r\n\r\n //$keyLS\r\n let $keyLS = get(vo, '$store.state.webInfor.webKey', '')\r\n // console.log('$keyLS', $keyLS)\r\n\r\n //check\r\n if (!isestr($keyLS)) {\r\n // console.log('invalid $keyLS')\r\n\r\n //alert\r\n vo.$alert(vo.$t('failedLoginForNoWebKey'), { type: 'error' })\r\n\r\n //reject\r\n pm.reject('invalid $keyLS')\r\n\r\n return\r\n }\r\n\r\n //key\r\n let key = `${$keyLS}:userToken`\r\n // console.log('key', key)\r\n\r\n //getItem\r\n let token = await localStorage.getItem(key)\r\n // console.log('token', token)\r\n\r\n //check\r\n if (!isestr(token)) {\r\n // console.log('invalid token')\r\n\r\n //reject\r\n pm.reject('invalid token')\r\n\r\n return\r\n }\r\n\r\n //checkToken\r\n await vo.$fapi.checkToken(token) //斷線有重試機制, resolve僅回傳true, reject代表無效token或檢測token發生錯誤\r\n .catch((err) => {\r\n // console.log('checkToken catch', err)\r\n errTemp = err\r\n })\r\n\r\n //check\r\n if (errTemp) {\r\n\r\n //setItem, 清空token\r\n await localStorage.setItem(key, '')\r\n\r\n //reject\r\n pm.reject('token error')\r\n\r\n return\r\n }\r\n\r\n //getUserByToken\r\n let u = await vo.$fapi.getUserByToken(token)\r\n // console.log('getUserByToken u', u)\r\n\r\n //check\r\n if (!iseobj(u)) {\r\n // console.log('invalid user')\r\n\r\n //reject\r\n pm.reject('invalid user')\r\n\r\n return\r\n }\r\n\r\n //update token and user\r\n updateUserToken(token)\r\n updateUserSelf(u)\r\n\r\n //useRedir\r\n if (useRedir) {\r\n\r\n //redir\r\n let redir = get(u, 'redir', '')\r\n // console.log('redir', redir)\r\n\r\n //check\r\n if (!isestr(redir)) {\r\n // console.log('invalid redir')\r\n\r\n //alert\r\n vo.$alert(vo.$t('failedLoginForNoRedir'), { type: 'error' })\r\n\r\n //reject\r\n pm.reject('invalid redir')\r\n\r\n return\r\n }\r\n\r\n //goUrl\r\n goUrl(redir, token)\r\n // console.log('goUrl', redir, 'token', token)\r\n\r\n //resolve\r\n pm.resolve('redir')\r\n\r\n return\r\n }\r\n\r\n //resolve\r\n pm.resolve('done')\r\n\r\n }\r\n\r\n //core\r\n core()\r\n .catch((err) => {\r\n // console.log('autoLogin', err)\r\n\r\n //alert\r\n vo.$alert(vo.$t('failedLoginForCatch'), { type: 'error' })\r\n\r\n //reject\r\n pm.reject(err)\r\n\r\n })\r\n\r\n return pm\r\n}\r\n\r\n\r\nfunction logout() {\r\n\r\n //pm\r\n let pm = genPm()\r\n\r\n async function core() {\r\n\r\n //$keyLS\r\n let $keyLS = get(vo, '$store.state.webInfor.webKey', '')\r\n\r\n //check\r\n if (!isestr($keyLS)) {\r\n\r\n //alert\r\n vo.$alert(vo.$t('failedLogoutForNoWebKey'), { type: 'error' })\r\n\r\n return Promise.reject(`invalid $keyLS`)\r\n }\r\n\r\n //key\r\n let key = `${$keyLS}:userToken`\r\n // console.log('key', key)\r\n\r\n //getItem\r\n let token = await localStorage.getItem(key)\r\n // console.log('token', token)\r\n\r\n //logoutByToken\r\n await vo.$fapi.logoutByToken(token)\r\n .catch(() => {}) //屏蔽伺服器端logout失敗訊息, 避免斷線時無限報錯\r\n\r\n //setItem, 清空token\r\n await localStorage.setItem(key, '')\r\n\r\n }\r\n\r\n //core\r\n core()\r\n .then(() => {\r\n\r\n //resolve\r\n pm.resolve('done')\r\n\r\n })\r\n .catch((err) => {\r\n // console.log('logout', err)\r\n\r\n //alert\r\n vo.$alert(vo.$t('failedLogoutForCatch'), { type: 'error' })\r\n\r\n //reject\r\n pm.reject(err)\r\n\r\n })\r\n\r\n return pm\r\n}\r\n\r\n\r\nlet kpIcon = {\r\n warning: `data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAhCAYAAACxzQkrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOwwAADsMBx2+oZAAAABZ0RVh0Q3JlYXRpb24gVGltZQAwOS8xOS8yNP52YhIAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzbovLKMAAADMklEQVRYha2WTWgTQRiGn0k2SU2KNQjmoiL+gGAVD/5gEelAkSKOiILei+hBRAQv/tBDsQiK1CJFDz331tNePAjRm60eBL0pXsSDF+dimmzbZDzsRJNmm+xPXliyOzP7zrNfvpn5hDGGJNJSHQJmAQHcLpbdL0n8RBIgLdVhYBHYb5u+AZeLZfdzXM9UbBpfC8AB/OgIe7+QxDA2kJZqAhgO6Bq2fbEU6y/TUuWB70BpkyG/gL3FsrsS1TtuhO53gcH23Y9jHDlCWqqd+Mmb6zHUA/YVy+7PKP5xIvQkBAx2zNOo5pEipKU6Bnzo6Kg3/N904PcdL5bdj2HniBqh2bYnITDVGmQcyDj+vRDd3+kXkJbqEjDS2mYqK2THTjO0MMfQwhzZsdOYSsfCGrHv9g9IS+UAz9oajUFkHPITV0mVSqRKJfITVxAZBzrT4Jn16A8QcBvY0w4EZDL+/mw8/xIpv60zLfdYj+RAWqrtwGRgpzHQaJm90QiKTlOT1isZEPAI2BpiXC9ttV5d1RVIS3UQuN4HmKZuWM94QMBMiDFRJKznptp0Mi3VGDDeR5imxq13eCB95iz0+JKEmtFj58IDkc5dI7jWaZcQ7cdFOhW0UwdpmHr6WiggLVUBmO4NA6bmYSpVEIMgBjGVKqbm+ZnSW9N2ru5AwANgR28gf9bKzDxry+9ZW35PZWa+ra+Hdti52m1bT3st1S7gK+HKi/+Ha73uP6fTiC0D3TbHjfKAA8Wy+6PZsDFCT0PDAGAQ2Qys12G97t8HnBtd1FEz/YuQluoEsBTFjXoDnDQ5u4o9940PF1wXddPJYtldBmg9gZ9HdTG1GoMPb5G9cBEAZ+9u/ky/QBTyUa2eY0ubFICWSgGnotEYxEAO59gRoAJUcI4fQQzkouRQU6csAykt1TZgKqqDn9Aeq6/fAQWgwOrrt5iqF3aVbdSUlmpI/B49vwiErujaZAxmbZ3syaMArC598gu0eEAAi+L36PkakVZWANRKFQCR35IEBqCaAl4mcUAIRCHvJ3IyGIBXjhHcEYYGcJMkkUomD5gziLut+9Bj4DKQJeLulkACWAUWi2X3HsBfLU4ARuGaUEMAAAAASUVORK5CYII=`,\r\n}\r\nfunction getIcon(icon) {\r\n let c = get(kpIcon, icon, '')\r\n if (!isestr(c)) {\r\n console.log(`invalid icon[${icon}]`)\r\n }\r\n return c\r\n}\r\n\r\n\r\nlet mUI = {\r\n\r\n setVo,\r\n\r\n // updateConnState,\r\n updateLoading,\r\n updateViewState,\r\n updateUserToken,\r\n updateUserSelf,\r\n forceUpdate,\r\n\r\n setLang,\r\n getKpText,\r\n\r\n gv,\r\n syncHeight,\r\n\r\n // waitData,\r\n\r\n parseUrlParams,\r\n getUrlView,\r\n goUrl,\r\n\r\n login,\r\n autoLogin,\r\n logout,\r\n\r\n getIcon,\r\n\r\n}\r\n\r\n\r\nexport default mUI\r\n","import get from 'lodash-es/get.js'\nimport find from 'lodash-es/find.js'\nimport isestr from 'wsemi/src/isestr.mjs'\r\n\r\n\r\nfunction mDataSelectorSchema(ds, opt = {}) {\r\n\r\n function getTableInforBy(keyFind, valueFind, keyPick) {\r\n let r = find(ds, { [keyFind]: valueFind })\r\n if (!r) {\r\n r = ''\r\n }\r\n if (isestr(keyPick)) {\r\n r = get(r, keyPick, '')\r\n }\r\n return r\r\n }\r\n\r\n function getTableChtByKey(valueFind) {\r\n return getTableInforBy('keyTable', valueFind, 'tableNameCht')\r\n }\r\n\r\n return {\r\n getTableInforBy,\r\n getTableChtByKey,\r\n }\r\n}\r\n\r\n\r\nexport default mDataSelectorSchema\r\n","//前後端共用函數區\r\nimport ot from 'dayjs'\r\nimport get from 'lodash-es/get.js'\r\nimport each from 'lodash-es/each.js'\r\nimport map from 'lodash-es/map.js'\r\nimport find from 'lodash-es/find.js'\r\nimport join from 'lodash-es/join.js'\r\nimport cloneDeep from 'lodash-es/cloneDeep.js'\r\nimport takeRight from 'lodash-es/takeRight.js'\r\nimport dropRight from 'lodash-es/dropRight.js'\r\nimport sortBy from 'lodash-es/sortBy.js'\r\nimport sep from 'wsemi/src/sep.mjs'\r\nimport iseobj from 'wsemi/src/iseobj.mjs'\r\nimport isestr from 'wsemi/src/isestr.mjs'\r\nimport istimemsTZ from 'wsemi/src/istimemsTZ.mjs'\r\nimport haskey from 'wsemi/src/haskey.mjs'\r\nimport composeToTree from 'wsemi/src/composeToTree.mjs'\r\n\r\n\r\n// //dlm\r\n// let dlm = '/'\r\n\r\n\r\nfunction getNameNew(rows, key = 'name', nameBase = '', nameExt = '') {\r\n\r\n //hasName\r\n let hasName = (name) => {\r\n let b = false\r\n each(rows, (r) => {\r\n let _name = get(r, key, '')\r\n if (_name === name) {\r\n b = true\r\n return false //跳出\r\n }\r\n })\r\n return b\r\n }\r\n\r\n //nameNew\r\n let nameNew = ''\r\n let b = true\r\n let i = 0\r\n while (b) {\r\n i++\r\n let pre = ''\r\n if (isestr(nameBase)) {\r\n pre = `${nameBase} - `\r\n }\r\n nameNew = `${pre}${nameExt}(${i})` //vo.$t('pemiAddNameNew') vo.$t('pemiCopyNameNew')\r\n b = hasName(nameNew)\r\n }\r\n\r\n return nameNew\r\n}\r\n\r\n\r\n// function getAllBlocks(targets) {\r\n\r\n// //rs\r\n// let rs = map(targets, (v) => {\r\n\r\n// //text, parentId\r\n// let s = sep(v.id, dlm) //[tag:dlm]\r\n// let text = get(takeRight(s), 0) //取最後節點\r\n// s = dropRight(s, 1)\r\n// let parentId = join(s, dlm) //[tag:dlm] 取父節點\r\n\r\n// return {\r\n// ...v,\r\n// idTemp: v.id,\r\n// parentId,\r\n// text,\r\n// }\r\n// })\r\n// // console.log('rs', rs)\r\n\r\n// //sortBy\r\n// rs = sortBy(rs, 'order')\r\n// // console.log('rs sortBy', rs)\r\n\r\n// return rs\r\n// }\r\n\r\n\r\n// function getTreeBlocks(targets) {\r\n\r\n// //getAllBlocks\r\n// let blocks = getAllBlocks(targets)\r\n// // console.log('blocks', blocks)\r\n\r\n// //opt\r\n// let opt = {\r\n// bindKey: 'id',\r\n// bindParent: 'parentId',\r\n// bindChildren: 'children',\r\n// saveExtProps: true,\r\n// }\r\n\r\n// //composeToTree\r\n// let r\r\n// try {\r\n// r = composeToTree(blocks, opt)\r\n// }\r\n// catch (err) {\r\n// console.log(err)\r\n// }\r\n// // console.log('treeBlocks', cloneDeep(r))\r\n\r\n// return r\r\n// }\r\n\r\n\r\n// function getUserGroups(user, ruleGroups) {\r\n\r\n// //userGroups\r\n// let ruleGroupsIds = get(user, 'ruleGroupsIds', '')\r\n\r\n// //sep\r\n// let s = sep(ruleGroupsIds, ';')\r\n\r\n// //gs\r\n// let gs = []\r\n// each(s, (id) => {\r\n// let g = find(ruleGroups, { id })\r\n// if (iseobj(g)) {\r\n// gs.push(g)\r\n// }\r\n// })\r\n\r\n// //add rules\r\n// gs = map(gs, (g) => {\r\n// let rules = JSON5.parse(g.crules)\r\n// g.rules = rules\r\n// return g\r\n// })\r\n\r\n// return gs\r\n// }\r\n\r\n\r\n// function getTargetsByGroup(targets, group) {\r\n\r\n// //cloneDeep\r\n// targets = cloneDeep(targets)\r\n\r\n// //sortBy\r\n// targets = sortBy(targets, 'order')\r\n\r\n// //cloneDeep\r\n// group = cloneDeep(group)\r\n\r\n// //rules\r\n// let rules = JSON5.parse(group.crules)\r\n\r\n// //rulesDisplay\r\n// let rulesDisplay = {}\r\n// let ks = ['show', 'active']\r\n// each(ks, (k) => {\r\n\r\n// //___all___\r\n// let def = get(rules, `___all___.${k}`)\r\n// def = (def === 'y') ? 'y' : 'n'\r\n\r\n// //other props\r\n// each(targets, (v) => {\r\n\r\n// //krule\r\n// let krule = v.id\r\n\r\n// //check\r\n// if (!rulesDisplay[krule]) {\r\n// rulesDisplay[krule] = {}\r\n// }\r\n\r\n// //rule\r\n// let rule = rules[krule]\r\n\r\n// //r\r\n// let r = null\r\n\r\n// //b\r\n// let b = get(rule, `${k}`)\r\n// if (b === 'y' || b === 'n') {\r\n// r = b\r\n// }\r\n// else {\r\n// r = def\r\n// }\r\n\r\n// //save\r\n// rulesDisplay[krule][k] = r //因krule內含有「.」故不能用set\r\n\r\n// })\r\n\r\n// })\r\n// // console.log('rulesDisplay', rulesDisplay)\r\n\r\n// return rulesDisplay\r\n// }\r\n\r\n\r\n// function getUserRules(user, ruleGroups, targets) {\r\n// //依照使用者所允許之ruleGroups轉出對全部targets權限\r\n\r\n// //ruleGroupsIds\r\n// let ruleGroupsIds = get(user, 'ruleGroupsIds', '')\r\n\r\n// //getUserGroups\r\n// let gs = getUserGroups(user, ruleGroups)\r\n// // console.log('gs', gs)\r\n\r\n// //ruleGroupsNames\r\n// let ruleGroupsNames = map(gs, 'name')\r\n// ruleGroupsNames = join(ruleGroupsNames, ';')\r\n\r\n// //getTargetsByGroup\r\n// let rulesDisplay = {}\r\n// each(gs, (g) => {\r\n// let r = getTargetsByGroup(targets, g)\r\n// each(r, (v, k) => {\r\n\r\n// //check\r\n// if (!haskey(rulesDisplay, k)) {\r\n// rulesDisplay[k] = {}\r\n// }\r\n\r\n// //merge\r\n// let ks = ['show', 'active']\r\n// each(ks, (kk) => {\r\n// let bOld = rulesDisplay[k][kk]\r\n// let bNew = r[k][kk]\r\n// if (bOld === 'y') {\r\n// //不用覆寫\r\n// }\r\n// else {\r\n// //需覆寫\r\n// if (bNew === 'y') {\r\n// rulesDisplay[k][kk] = 'y'\r\n// }\r\n// else {\r\n// rulesDisplay[k][kk] = 'n'\r\n// }\r\n// }\r\n// })\r\n\r\n// })\r\n// })\r\n// // console.log('rulesDisplay', rulesDisplay)\r\n\r\n// return {\r\n// ruleGroupsIds,\r\n// ruleGroupsNames,\r\n// rules: rulesDisplay,\r\n// }\r\n// }\r\n\r\n\r\nfunction getIsVerified(v) {\r\n\r\n //timeVerified\r\n let timeVerified = get(v, 'timeVerified', '')\r\n // console.log('timeVerified', timeVerified)\r\n\r\n return istimemsTZ(timeVerified) //有驗證時間, 代表已驗證\r\n}\r\n\r\n\r\nfunction getIsExpired(v) {\r\n\r\n //timeExpired\r\n let timeExpired = get(v, 'timeExpired', '')\r\n // console.log('timeExpired', timeExpired)\r\n\r\n //check\r\n if (!istimemsTZ(timeExpired)) {\r\n return false //無過期時間, 代表未過期\r\n }\r\n\r\n //tn\r\n let tn = ot().format('YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n\r\n return tn >= timeExpired //現在時間>=過期時間, 代表已過期\r\n}\r\n\r\n\r\nfunction getIsBlocked(v) {\r\n\r\n //timeBlocked\r\n let timeBlocked = get(v, 'timeBlocked', '')\r\n // console.log('timeBlocked', timeBlocked)\r\n\r\n //check\r\n if (!istimemsTZ(timeBlocked)) {\r\n return false //無封鎖時間, 代表未封鎖\r\n }\r\n\r\n //tn\r\n let tn = ot().format('YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n\r\n return tn <= timeBlocked //現在時間<=封鎖時間, 代表封鎖中\r\n}\r\n\r\n\r\nfunction getIsEnded(v) {\r\n\r\n //timeEnd\r\n let timeEnd = get(v, 'timeEnd', '')\r\n // console.log('timeEnd', timeEnd)\r\n\r\n //check\r\n if (!istimemsTZ(timeEnd)) {\r\n return false //無到期時間, 代表未失效\r\n }\r\n\r\n //tn\r\n let tn = ot().format('YYYY-MM-DDTHH:mm:ss.SSSZ')\r\n\r\n return tn > timeEnd //現在時間>到期時間, 代表失效\r\n}\r\n\r\n\r\nfunction getIsAdmin(v) {\r\n\r\n //isAdmin\r\n let isAdmin = get(v, 'isAdmin', '')\r\n // console.log('isAdmin', isAdmin)\r\n\r\n return isAdmin === 'y'\r\n}\r\n\r\n\r\nfunction getIsActive(v) {\r\n\r\n //isActive\r\n let isActive = get(v, 'isActive', '')\r\n // console.log('isActive', isActive)\r\n\r\n return isActive === 'y'\r\n}\r\n\r\n\r\nexport {\r\n getNameNew,\r\n // getAllBlocks,\r\n // getTreeBlocks\r\n // getUserGroups,\r\n // getTargetsByGroup,\r\n // getUserRules,\r\n getIsVerified,\r\n getIsExpired,\r\n getIsBlocked,\r\n getIsEnded,\r\n getIsAdmin,\r\n getIsActive\r\n}\r\n","import Vue from 'vue'\r\nimport get from 'lodash-es/get.js'\r\nimport WServHapiClient from 'w-serv-hapi/src/WServHapiClient.mjs'\r\nimport WAlert from 'w-component-vue/src/components/WAlert.mjs'\r\nimport domMutation from 'w-component-vue/src/js/domMutation.mjs'\r\nimport domResize from 'w-component-vue/src/js/domResize.mjs'\r\nimport domDragDrop from 'w-component-vue/src/js/domDragDrop.mjs'\r\nimport App from './App.vue'\r\nimport store from './store/index.mjs'\r\nimport ui from './plugins/mUI.mjs'\r\nimport mDataSelectorSchema from './plugins/mDataSelectorSchema.mjs'\r\n// import mDataSupport from './plugins/mDataSupport.mjs'\r\nimport * as s from './plugins/mShare.mjs'\r\nimport ds from './schema/index.mjs'\r\n// console.log('ds', ds)\r\n\r\n\r\n//不提示vue產品\r\nVue.config.productionTip = false\r\n\r\n//$alert\r\nVue.prototype.$alert = function() {\r\n let [msg, type] = arguments\r\n console.log(msg, type)\r\n if (msg !== 'close') {\r\n WAlert(msg, type)\r\n }\r\n}\r\n\r\n//dssm\r\nlet dssm = mDataSelectorSchema(ds)\r\n\r\n// //dspt\r\n// let dspt = mDataSupport(Vue.prototype)\r\n\r\n//prototype\r\nVue.prototype.$ui = ui\r\nVue.prototype.$t = ui.getKpText\r\nVue.prototype.$s = s\r\nVue.prototype.$dssm = dssm\r\n// Vue.prototype.$dspt = dspt\r\nVue.prototype.$ds = ds\r\nVue.prototype.$dg = {}\r\n\r\n//directive\r\nVue.directive('domresize', domResize())\r\nVue.directive('dommutation', domMutation())\r\nVue.directive('domdragdrop', domDragDrop())\r\n\r\n//WServHapiClient\r\n// let bFirstSync = false //不需要bFirstSync, 由getWebInfor結束代表第1次完成同步\r\nWServHapiClient({\r\n showLog: false,\r\n url: window.location.origin + window.location.pathname,\r\n useWaitToken: false,\r\n apiName: 'api',\r\n tokenType: 'Bearer',\r\n getToken: () => {\r\n let token = get(Vue.prototype, `$store.state.userToken`, '')\r\n // console.log('getToken', token)\r\n return token\r\n },\r\n getServerMethods: (_fapi) => {\r\n // console.log('$fapi', _fapi)\r\n\r\n //save $fapi\r\n Vue.prototype.$fapi = _fapi\r\n\r\n //getWebInfor\r\n _fapi.getWebInfor() //已有fapi時優先取得web資訊\r\n .then((wi) => {\r\n // console.log('$fapi getWebInfor', wi)\r\n\r\n Vue.prototype.$store.commit(Vue.prototype.$store.types.UpdateWebInfor, wi)\r\n ui.setLang(null, 'get webInfor') //因更新webInfor可取得webName與webDescription, 得要重刷語系才能依照語言取得顯示文字\r\n\r\n //commit syncState\r\n Vue.prototype.$store.commit(Vue.prototype.$store.types.UpdateSyncState, true)\r\n\r\n })\r\n .catch((err) => {\r\n console.log(err)\r\n })\r\n\r\n },\r\n recvData: (r) => {\r\n // console.log('sync data', r.tableName, r.data)\r\n Vue.prototype.$store.commit(Vue.prototype.$store.types.UpdateTableData, r)\r\n },\r\n})\r\n\r\n//new\r\nnew Vue({\r\n store,\r\n render: h => h(App)\r\n}).$mount('#app')\r\n\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkw_web_sso\"] = self[\"webpackChunkw_web_sso\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(9602); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["webpackEmptyAsyncContext","req","Promise","resolve","then","e","Error","code","keys","id","module","exports","render","_vm","this","_c","_self","directives","name","rawName","on","resize","autoLogining","staticStyle","attrs","viewState","_e","staticRenderFns","loading","dialogWidth","$event","resizeDialog","scopedSlots","_u","key","fn","style","concat","barPadding","msg","_v","_s","$t","barWidth","proxy","components","WDialog","WProgressBar","props","data","dialogWidthMax","mounted","vo","Vue","prototype","$dg","setLoadingWinBarMessage","setMessage","computed","b","get","methods","w","window","innerWidth","Math","max","min","component","bShow","content","clickBtn","WConfirm","pm","showCheckYesNo","show","genPm","mode","reject","clickUnit","showCheckYes","c1","c2","c3","logoSize","contentWidth","c4","c5","webLogo","contentPadding","webName","login","model","value","account","callback","$$v","expression","showPassword","password","hasAcPw","v","h","showLangSelect","keysLang","lang","toggleLang","getLangText","item","WIcon","WText","WTextSelect","WButtonChip","firstSetting","kpLangSelect","showLanguage","language","$ui","setLang","c","isestr","document","title","webInfor","wi","webBackgoundGradientColors","webKey","t","view","getUrlView","useRedir","updateViewState","console","log","catch","err","heightToolbar","mdiAccountCircleOutline","userName","logout","mdiLogoutVariant","syncState","panelHeight","drawerWidth","drawerWidthMin","drawerWidthMax","height","menus","menuActive","menu","menuKey","drawer","mdiArrowLeftBoldHexagonOutline","width","mdiArrowRightBoldHexagonOutline","changeLang","resizePanel","isLoading","errMsg","staticClass","_m","userOverview","total","active","locked","expired","timeGroupLogin","$$selectedVal","Array","filter","call","target","options","o","selected","map","val","_value","multiple","updateChartsDebounce","_l","timeGroupOptions","domProps","optLogin","showIndividuallyToken","isArray","_i","$$a","$$el","$$c","checked","$$i","slice","timeGroupToken","optToken","tokenUsageSummary","length","showAllTokenUsers","displayTokenUsageSummary","index","number","username","formatNumber","last1d","last8h","last4h","last1h","toggleShowAllTokenUsers","showIndividuallyIp","timeGroupIp","optIp","ipUsageSummary","showAllIpUsers","displayIpUsageSummary","ip","toggleShowAllIpUsers","tokenStatus","created24h","ending24h","ended","ipCharacteristic","conn24h","blocked","WEchartsVueDyn","dbc","debounce","panelWidth","freqLogin","freqToken","freqIp","getAndRelaData","userToken","snew","offsetWidth","offsetHeight","genOpt","arr","keysPick","timeGroup","arguments","undefined","size","isearr","dataProc","groupHours","gs","groupBy","ot","time","hour","hGroup","floor","tNew","startOf","add","format","vs","r","each","k","sumBy","colors","getColor","kpKey","count","attempt","success","error","getName","valueKey","langKey","haskey","totalBarsPerGroup","barWidthPercent","series","color","type","itemStyle","emphasis","focus","formatX","strright","opt","text","tooltip","trigger","axisPointer","grid","left","right","bottom","containLabel","legend","xAxis","axisTick","alignWithLabel","yAxis","grStaUserSummary","_grStaUserSummary","_asyncToGenerator","_regeneratorRuntime","_callee","token","_context","prev","next","$fapi","getStaUserSummary","res","stop","apply","grStaTokenSummary","_grStaTokenSummary","_callee2","_context2","getStaTokenSummary","grStaIpSummary","_grStaIpSummary","_callee3","_context3","getStaIpSummary","grStaUserAccountLogin","_grStaUserAccountLogin","_callee4","_context4","getStaUserAccountLogin","grStaToken","_grStaToken","_callee5","_context5","getStaToken","updateCharts","calculateTokenUsageSummary","grStaIp","_name","_callee6","params","_context6","getStaIp","calculateIpUsageSummary","_x","_getAndRelaData","_callee7","_context7","finally","dataToken","ksToken","dataIp","ksIp","tokenFrequency","users","reduce","acc","entry","userData","omit","now","diff1d","diff","diff8h","diff4h","diff1h","sortedSummary","toPairs","sortBy","reverse","ipFrequency","ips","ipData","num","toLocaleString","userLogo","gv","user","class","isBlocked","timeBlockedToDay","isExpired","timeExpiredToDay","isVerified","timeVerifiedToDay","WPanelLabelItem","headHeight","isOperatable","getUserByToken","$s","getIsVerified","timeVerified","istimemsTZ","tt","getIsExpired","timeExpired","getIsBlocked","timeBlocked","changeParams","resizeHead","mdiAccountGroupOutline","showIsEditable","isEditable","mdiTableHeadersEye","tabKeysPick","toggleTabKeys","getHead","tabKeysShow","mdiPlus","addItem","hasItemCheckOne","mdiContentCopy","copyItem","hasItemsCheck","mdiTrashCanOutline","deleteItemsCheck","isModified","mdiCloudUploadOutline","saveUsers","items","ref","contentHeight","WSwitch","WButtonCircle","WPopup","WInputCheckbox","WAggridVueDyn","Boolean","default","tabKeys","widthUsersName","widthUsersEmail","widthUsersDescription","itemsCheck","toggleItemIsAdminById","toggleItemIsActiveById","modifyItemPasswordById","modifyItemTimeVerifiedById","modifyItemTimeExpiredById","modifyItemTimeBlockedById","showModeEditUsers","modeEditUsers","getUsersList","cloneDeep","errItemsByAccount","rows","kpErr","kpAccount","errItemsByEmail","kpEmail","email","isEmail","errItemsByRedir","redir","isError","iseobj","kpHead","kp","head","ks","kpCellEditable","kpRowDrag","kpHeadCheckBox","kpHeadHide","tabKeysHide","arrPull","defCellEditable","defHeadFilter","defCellAlignH","kpHeadFixLeft","defHeadMinWidth","kpHeadWidth","kpHeadFilterType","kpHeadFilter","kpHeadSort","kpHeadFocusHighlight","kpCellRender","cstr","getIcon","vv","vm","vt","iconColor","rowsChange","rs","rowChecked","refresh","cmp","showKeys","$alert","toggleItemByKeyAndId","kr","set","modifyItemByKeyAndId","ele","timePrev","domShowInputDatatime","eleRef","timeNew","$ds","funNew","getNameNew","userId","timeCreate","userIdUpdate","timeUpdate","_toConsumableArray","tar","tarId","row","_r","core","_core","errTemp","updateLoading","abrupt","updateUsersList","mdiShieldKeyOutline","saveTokens","tokens","toggleItemIsAppById","modifyItemTimeCreateById","modifyItemTimeEndById","modifyItemTimeUpdateById","showModeEditTokens","modeEditTokens","getTokensList","isApp","updateTokensList","mdiIpNetwork","saveIps","showModeEditIps","modeEditIps","getIpsList","updateIpsList","WDrawer","WListVertical","LayoutContentStaInfor","LayoutContentUserInfor","LayoutContentUsers","LayoutContentTokens","LayoutContentIps","ms","icon","mdiChartBar","mdiInformationVariantCircleOutline","find","clientWidth","clientHeight","LayoutContent","setInterval","checkToken","beforeDestroy","clearInterval","userSelf","LoadingWinBar","CheckYesNo","CheckYes","PageLogin","Layout","beforeMount","setVo","$vo","autoLogin","syncHeight","UpdateWebInfor","UpdateLang","UpdateKpText","UpdateSyncState","UpdateLoading","UpdateViewState","UpdateTableData","UpdateData","UpdateHeightApp","UpdateHeightAppEff","UpdateHeightToolbar","UpdateMenu","UpdateUserToken","UpdateUserSelf","keyTable","tableNameCht","tableNameEng","settings","pk","ndata","dtmapping","genIDSeq","funTest","tab","timeEnd","nowms2str","order","description","from","isAdmin","isActive","cs","ds","build","useCreateStorage","state","hostname","location","origin","connState","leftDrawerWidth","heightApp","heightAppEff","kpText","mutations","_mutations","_defineProperty","types","tableName","path","use","Vuex","st","getters","actions","strict","$store","kpLang","csIng","eng","cht","csLogin","csLogout","csErrConn","csErrLogin","aggridLanguage","systemMessage","ok","no","yes","y","n","empty","to","at","unknow","waitingData","isEditabled","saveChanges","save","close","cancel","processing","anUnexpectedErrorOccurred","getDataError","userIdCreate","toggleToShowPassword","toggleToHidePassword","noDescription","menuTreeShow","menuTreeHide","mmStaInfor","mmStaInforMsg","mmUserInfor","mmUsersList","mmUsersListMsg","mmTokensList","mmTokensListMsg","mmIpsList","mmIpsListMsg","nowTokensList","nowBlockList","systemTokenList","failedLoginForNoWebKey","failedLoginForNoToken","failedLoginForNoRedir","failedLoginForCatch","failedLogoutForNoWebKey","failedLogoutForCatch","userStatus","isVerifiedY","isVerifiedN","userTimeVerified","isVerifiedWaiting","isExpiredY","isExpiredN","userTimeExpired","isExpiredDeny","isExpiredNever","isBlockedY","isBlockedN","userTimeBlocked","isBlockedNormalStatus","isAdminY","isAdminN","userRole","userRoleAdmin","userRoleGeneral","isActiveY","isActiveMsgY","isActiveN","isActiveMsgN","errInNames","errInAccounts","errInEmails","modeEdit","showTabCols","userList","userNameEmpty","userNameDuplicate","userAccountEmpty","userAccountDuplicate","userEmailEmpty","userEmailError","userEmailDuplicate","userRedirEmpty","userTimeEmpty","userAddEmpty","userAdd","userAddNameNew","userAddIdNew","userCopy","userCopyNameNew","userDeleteCheckUsers","userResetPassword","userSaveUsersEmpty","userSaveUsersFail","userSaveUsersSuccess","userEditNoUserId","userEditNoUserData","tokenTimeCreate","tokenTimeEnd","tokenTimeUpdate","tokenDeleteCheckTokens","tokenTimeEmpty","tokenEditNoTokenId","tokenEditNoTokenData","tokenSaveTokensFail","tokenSaveTokensSuccess","ipTimeBlocked","ipDeleteCheckIps","ipTimeEmpty","ipEditNoIpId","ipEditNoIpData","ipSaveIpsFail","ipSaveIpsSuccess","statisticsInformation","statisticsInformationDescription","userGroupInfor","totalUsers","activeUsers","blockedUsers","expiredUsers","accessActivityMonitoring","userLoginFrequency","last7Days","tokenUsageFrequency","ipConnectionFrequency","controlStatus","tokenCharacteristic","activeTokens","createdLast24h","endingNext24h","endedTokens","blockedIps","selectItem1hr","selectItem4hr","selectItem8hr","selectItem1day","countAttempt","countSuccess","countError","showIndividually","numberOrder","last1Day","last8Hour","last4Hour","last1Hour","showMax5","showAll","dayCreate","newUser","failedToAddUser","successfulToAddUser","confirmToDeleteUser","failedToDeleteUser","successfulToDeleteUser","cannotShowUserDetailsInViewMode","allDefaults","showChildren","hideChildren","activateChildren","deactivateChildren","isUsernameEmpty","failedToSaveUser","successfulToSaveUser","vObj","commit","updateUserToken","updateUserSelf","forceUpdate","broadcast","chs","$forceUpdate","$children","validLang","getLang","_lang","genKpText","_objectSpread","kpLangExt","webDescription","getKpText","cv","def","isfun","innerHeight","parseUrlParams","ulps","URLSearchParams","search","forEach","goUrl","url","replaceAll","href","$keyLS","u","delay","loginByAccountAndPassword","sent","localStorage","setItem","_core2","waitFun","getItem","_core3","logoutByToken","kpIcon","warning","mUI","mDataSelectorSchema","getTableInforBy","keyFind","valueFind","keyPick","getTableChtByKey","nameBase","nameExt","hasName","nameNew","i","pre","tn","getIsEnded","getIsAdmin","getIsActive","config","productionTip","_arguments","WAlert","dssm","ui","s","$dssm","directive","domResize","domMutation","domDragDrop","WServHapiClient","showLog","pathname","useWaitToken","apiName","tokenType","getToken","getServerMethods","_fapi","getWebInfor","recvData","store","App","$mount","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","deferred","O","result","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","Object","every","splice","getter","__esModule","d","a","definition","defineProperty","enumerable","g","globalThis","Function","obj","prop","hasOwnProperty","Symbol","toStringTag","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","bind","push","__webpack_exports__"],"sourceRoot":""}