w-web-sso 1.0.13 → 1.0.14
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.
- package/db/wsso/ips/data.mdb +0 -0
- package/db/wsso/ips/lock.mdb +0 -0
- package/db/wsso/tokens/data.mdb +0 -0
- package/db/wsso/tokens/lock.mdb +0 -0
- package/db/wsso/users/data.mdb +0 -0
- package/db/wsso/users/lock.mdb +0 -0
- package/dist/css/{app.03a2f95c.css → app.9a2df8bf.css} +1 -1
- package/dist/index.tmp +6 -2
- package/dist/js/app-legacy.191db338.js +2 -0
- package/dist/js/app-legacy.191db338.js.map +1 -0
- package/dist/js/app.df31ccb0.js +2 -0
- package/dist/js/app.df31ccb0.js.map +1 -0
- package/dist/js/chunk-vendors-legacy.13e01f0d.js +15 -0
- package/dist/js/chunk-vendors-legacy.13e01f0d.js.map +1 -0
- package/dist/js/chunk-vendors.13e01f0d.js +15 -0
- package/dist/js/chunk-vendors.13e01f0d.js.map +1 -0
- package/dist/w-web-sso.umd.js +2 -2
- package/dist/w-web-sso.umd.js.map +1 -1
- package/docs/WWebSso.html +4 -112
- package/docs/WWebSso.mjs.html +299 -110
- package/docs/index.html +1 -1
- package/g.getSettings.mjs +0 -1
- package/g.initialData.mjs +8 -10
- package/g.mjs +0 -0
- package/package.json +6 -6
- package/public/index.html +10 -0
- package/server/WWebSso.mjs +298 -109
- package/server/procCore.mjs +655 -262
- package/server/procProtect.mjs +746 -0
- package/server/provideUsers.mjs +0 -1
- package/settings.json +15 -1
- package/src/components/Layout.vue +63 -8
- package/src/components/LayoutContent.vue +18 -27
- package/src/components/LayoutContentInfor.vue +338 -69
- package/src/components/LayoutContentIps.vue +757 -0
- package/src/components/LayoutContentTokens.vue +961 -0
- package/src/components/LayoutContentUsers.vue +21 -34
- package/src/components/PageLogin.vue +1 -1
- package/src/components/VeUser.vue.txt +9 -10
- package/src/components/ruleGroup.vue.txt +5 -6
- package/src/main.js +7 -13
- package/src/plugins/mLang.mjs +690 -520
- package/src/plugins/mShare.mjs +0 -1
- package/src/plugins/mUI.mjs +19 -18
- package/src/schema/index.mjs +2 -0
- package/src/schema/tables/ips.mjs +0 -9
- package/src/schema/tables/tokens.mjs +5 -1
- package/src/schema/tables/users.mjs +2 -14
- package/src/store/mutations.mjs +3 -3
- package/src/store/types.mjs +1 -1
- package/srv.mjs +55 -38
- package/dist/js/app-legacy.d468ef7f.js +0 -2
- package/dist/js/app-legacy.d468ef7f.js.map +0 -1
- package/dist/js/app.d468ef7f.js +0 -2
- package/dist/js/app.d468ef7f.js.map +0 -1
- package/dist/js/chunk-vendors-legacy.f51f58bb.js +0 -13
- package/dist/js/chunk-vendors-legacy.f51f58bb.js.map +0 -1
- package/dist/js/chunk-vendors.f51f58bb.js +0 -13
- package/dist/js/chunk-vendors.f51f58bb.js.map +0 -1
- package/src/components/LayoutContentSettings.vue +0 -1248
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"js/app-legacy.191db338.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/LayoutContentInfor.vue","webpack://w-web-sso/src/components/LayoutContentInfor.vue","webpack://w-web-sso/./src/components/LayoutContentInfor.vue?f2b9","webpack://w-web-sso/./src/components/LayoutContentInfor.vue?2ff3","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\"}},[_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))+\" \")]}}])})],1)])])\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 <div style=\"_white-space:nowrap\">\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 </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 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 webLogo: function() {\r\n let vo = this\r\n return get(vo, `$store.state.webInfor.webLogo`, '')\r\n },\r\n\r\n webBackgoundGradientColors: function() {\r\n let vo = this\r\n return get(vo, `$store.state.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=21d9cdde&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 \"21d9cdde\",\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==='mmUserInfor')?_c('LayoutContentInfor'):_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,1139681715),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%\"},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 //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 //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 //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: genID(),\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!./LayoutContentInfor.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!./LayoutContentInfor.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./LayoutContentInfor.vue?vue&type=template&id=e4333b80&scoped=true\"\nimport script from \"./LayoutContentInfor.vue?vue&type=script&lang=js\"\nexport * from \"./LayoutContentInfor.vue?vue&type=script&lang=js\"\nimport style0 from \"./LayoutContentInfor.vue?vue&type=style&index=0&id=e4333b80&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 \"e4333b80\",\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 'isVerified',\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 'isVerified',\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 'isVerified',\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 'isVerified': vo.$t('isVerified'),\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 // 'name': isnum(vo.widthUsersName) ? cdbl(vo.widthUsersName) : 200,\r\n // 'email': isnum(vo.widthUsersEmail) ? cdbl(vo.widthUsersEmail) : 300,\r\n // 'description': isnum(vo.widthUsersDescription) ? cdbl(vo.widthUsersDescription) : 300,\r\n // 'cgrups': 300,\r\n // 'isAdmin': 100,\r\n // 'isActive': 100,\r\n // 'timeCreate': 220,\r\n // 'timeUpdate': 220,\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 'isVerified': '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 'isVerified': (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.toggleItemIsVerifiedById('${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 // `\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.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 // `\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.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 // `\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.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 toggleItemIsVerifiedById: function(id) {\r\n // console.log('toggleItemIsVerifiedById', id)\r\n\r\n let vo = this\r\n\r\n //toggleItemByKeyAndId\r\n vo.toggleItemByKeyAndId('isVerified', 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=43b921f1&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 \"43b921f1\",\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 <LayoutContentInfor\r\n v-if=\"menuKey==='mmUserInfor'\"\r\n ></LayoutContentInfor>\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 { 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 LayoutContentInfor from './LayoutContentInfor.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 LayoutContentInfor,\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: 'mmUserInfor',\r\n\r\n panelWidth: 0,\r\n panelHeight: 0,\r\n\r\n drawer: true,\r\n drawerWidth: 220,\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: '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=591f65f8&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 \"591f65f8\",\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=0498e591&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 \"0498e591\",\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 genID from 'wsemi/src/genID.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 = `${now2strp()}-${genID()}`\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 genID from 'wsemi/src/genID.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 = `${now2strp()}-${genID()}`\r\n o.token = `${now2strp()}-${genID()}`\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 genID from 'wsemi/src/genID.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 isVerified: {\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 = `${now2strp()}-${genID()}`\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 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 //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 //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 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 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\nexport {\r\n getNameNew\r\n // getAllBlocks,\r\n // getTreeBlocks\r\n // getUserGroups,\r\n // getTargetsByGroup,\r\n // getUserRules\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__(5745); })\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","keysLang","lang","toggleLang","getLangText","item","WIcon","WText","WTextSelect","WButtonChip","firstSetting","showLangSelect","kpLangSelect","c","isestr","document","title","webBackgoundGradientColors","webKey","t","$ui","setLang","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","resizePanel","isLoading","errMsg","userLogo","gv","user","staticClass","class","isBlocked","timeBlockedToDay","isExpired","timeExpiredToDay","isVerified","timeVerifiedToDay","WPanelLabelItem","panelWidth","headHeight","isOperatable","token","userToken","$fapi","getUserByToken","res","finally","timeVerified","istimemsTZ","tt","ot","format","timeExpired","tn","timeBlocked","snew","offsetWidth","offsetHeight","changeParams","resizeHead","mdiAccountGroupOutline","showIsEditable","isEditable","mdiTableHeadersEye","tabKeysPick","toggleTabKeys","getHead","tabKeysShow","mdiPlus","addItem","hasItemCheckOne","mdiContentCopy","copyItem","hasItemsCheck","mdiTrashCanOutline","deleteItemsCheck","isModified","mdiCloudUploadOutline","saveUsers","items","ref","contentHeight","opt","WSwitch","WButtonCircle","WPopup","WInputCheckbox","WAggridVueDyn","type","Boolean","default","tabKeys","widthUsersName","widthUsersEmail","widthUsersDescription","users","itemsCheck","toggleItemIsAdminById","toggleItemIsVerifiedById","toggleItemIsActiveById","modifyItemPasswordById","modifyItemTimeVerifiedById","modifyItemTimeExpiredById","modifyItemTimeBlockedById","showModeEditUsers","modeEditUsers","getUsersList","sortBy","webInfor","wi","cloneDeep","genOpt","size","errItemsByAccount","rows","kpErr","kpAccount","each","k","haskey","errItemsByEmail","kpEmail","email","isEmail","errItemsByRedir","redir","isError","iseobj","kpHead","kp","head","ks","kpCellEditable","kpRowDrag","kpHeadCheckBox","kpHeadHide","tabKeysHide","arrPull","language","keys","defCellEditable","defHeadFilter","defCellAlignH","kpHeadFixLeft","defHeadMinWidth","kpHeadWidth","kpHeadFilterType","kpHeadFilter","kpHeadSort","kpHeadFocusHighlight","kpCellRender","cstr","getIcon","r","id","vv","vm","vt","rowsChange","rs","rowChecked","refresh","cmp","showKeys","$alert","toggleItemByKeyAndId","kr","set","modifyItemByKeyAndId","ele","timePrev","domShowInputDatatime","eleRef","timeNew","$ds","funNew","$s","getNameNew","userId","timeCreate","userIdUpdate","timeUpdate","_toConsumableArray","tar","tarId","row","_r","filter","core","_core","apply","arguments","_asyncToGenerator","_regeneratorRuntime","_callee","errTemp","_context","prev","next","updateLoading","abrupt","updateUsersList","stop","mdiShieldKeyOutline","saveTokens","tokens","toggleItemIsAppById","modifyItemTimeCreateById","modifyItemTimeEndById","modifyItemTimeUpdateById","showModeEditTokens","modeEditTokens","getTokensList","reverse","params","isApp","updateTokensList","mdiIpNetwork","saveIps","ips","showModeEditIps","modeEditIps","getIpsList","updateIpsList","WDrawer","WListVertical","LayoutContentInfor","LayoutContentUsers","LayoutContentTokens","LayoutContentIps","ms","text","icon","mdiInformationVariantCircleOutline","find","clientWidth","clientHeight","LayoutContent","showLanguage","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","ip","ndata","length","undefined","o","dtmapping","now2strp","genID","funTest","tab","timeEnd","nowms2str","add","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","username","noDescription","logout","menuTreeShow","menuTreeHide","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","dayCreate","newUser","failedToAddUser","successfulToAddUser","confirmToDeleteUser","failedToDeleteUser","successfulToDeleteUser","cannotShowUserDetailsInViewMode","allDefaults","active","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","_callee2","_context2","waitFun","getItem","_core3","_callee3","_context3","Promise","kpIcon","warning","mUI","mDataSelectorSchema","getTableInforBy","keyFind","valueFind","keyPick","getTableChtByKey","nameBase","nameExt","hasName","_name","nameNew","i","pre","config","productionTip","_arguments","Array","slice","call","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":""}
|