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.
@@ -1 +1 @@
1
- {"version":3,"file":"js/app-legacy.1ef4eafd.js","mappings":"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","sources":["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/./node_modules/w-converhp/src/ lazy strict namespace object","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":["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 wui from 'w-ui-loginout/src/WUiLoginout.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=bfbe9730\"\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=bfbe9730&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","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;","// 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__(2488); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["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","resolve","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","then","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","keys","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","id","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","Promise","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","webpackEmptyAsyncContext","req","e","Error","code","module","exports","__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":""}
1
+ {"version":3,"file":"js/app.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":""}